Skip to content

Commit 069ecb1

Browse files
authored
Merge branch '10.0-release' into fix/reporter-styles
2 parents c5d5be2 + 46a1bb1 commit 069ecb1

File tree

9 files changed

+89
-58
lines changed

9 files changed

+89
-58
lines changed

circle.yml

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,6 @@ commands:
419419
PERCY_PARALLEL_NONCE=$CIRCLE_WORKFLOW_ID \
420420
PERCY_ENABLE=${PERCY_TOKEN:-0} \
421421
PERCY_PARALLEL_TOTAL=-1 \
422-
yarn percy exec --parallel -- -- \
423422
yarn workspace @packages/<<parameters.package>> cypress:run:<<parameters.type>> --browser <<parameters.browser>> --record --parallel --group <<parameters.package>>-<<parameters.type>>
424423
- store_test_results:
425424
path: /tmp/cypress
@@ -1256,14 +1255,14 @@ jobs:
12561255
package: launchpad
12571256
type: e2e
12581257

1259-
# run-app-component-tests-chrome:
1260-
# <<: *defaults
1261-
# parallelism: 1
1262-
# steps:
1263-
# - run-new-ui-tests:
1264-
# browser: chrome
1265-
# package: app
1266-
# type: ct
1258+
run-app-component-tests-chrome:
1259+
<<: *defaults
1260+
parallelism: 1
1261+
steps:
1262+
- run-new-ui-tests:
1263+
browser: chrome
1264+
package: app
1265+
type: ct
12671266

12681267
run-app-integration-tests-chrome:
12691268
<<: *defaults
@@ -2235,10 +2234,10 @@ linux-workflow: &linux-workflow
22352234
context: test-runner:launchpad-tests
22362235
requires:
22372236
- build
2238-
# - run-app-component-tests-chrome:
2239-
# context: test-runner:launchpad-tests
2240-
# requires:
2241-
# - build
2237+
- run-app-component-tests-chrome:
2238+
context: test-runner:launchpad-tests
2239+
requires:
2240+
- build
22422241
- desktop-gui-integration-tests-7x:
22432242
requires:
22442243
- build
Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,57 @@
11
import { useMainStore } from '../store'
22
import SidebarNavigation from './SidebarNavigation.vue'
33

4-
describe('SidebarNavigation', () => {
5-
beforeEach(() => {
6-
cy.mount(() => {
7-
const mainStore = useMainStore()
8-
9-
return (
10-
<div>
11-
<div class={[mainStore.navBarExpanded ? 'w-248px' : 'w-64px', 'transition-all', 'h-screen']}>
12-
<SidebarNavigation />
13-
</div>
14-
<div id="tooltip-target"/>
4+
function mountComponent (initialNavExpandedVal = true) {
5+
const mainStore = useMainStore()
6+
7+
mainStore.navBarExpanded = initialNavExpandedVal
8+
9+
cy.mount(() => {
10+
return (
11+
<div>
12+
<div class={[mainStore.navBarExpanded ? 'w-248px' : 'w-64px', 'transition-all', 'h-screen', 'grid', 'grid-rows-1']}>
13+
<SidebarNavigation />
1514
</div>
16-
)
17-
})
15+
<div id="tooltip-target"/>
16+
</div>
17+
)
1818
})
19+
}
1920

21+
describe('SidebarNavigation', () => {
2022
it('expands the bar when clicking the expand button', () => {
23+
mountComponent()
24+
cy.findByLabelText('toggle navigation', {
25+
selector: 'button',
26+
}).click()
27+
28+
cy.get('[aria-expanded]').should('have.attr', 'aria-expanded', 'false')
2129
cy.findByText('test-project').should('not.be.visible')
22-
cy.get('[aria-expanded]').click().should('have.attr', 'aria-expanded', 'true')
30+
cy.findByLabelText('toggle navigation', {
31+
selector: 'button',
32+
}).click()
33+
34+
cy.get('[aria-expanded]').should('have.attr', 'aria-expanded', 'true')
2335
cy.findByText('test-project').should('be.visible')
2436
})
2537

2638
it('shows tooltips on hover', () => {
27-
cy.get('[data-cy="sidebar-header"').trigger('mouseover')
39+
mountComponent(false)
40+
cy.get('[data-cy="sidebar-header"').realHover()
2841
cy.contains('#tooltip-target > div', 'test-project').should('be.visible')
2942
cy.get('[data-cy="sidebar-header"]').trigger('mouseout')
3043

31-
cy.get('[data-cy="switch-testing-type"]').trigger('mouseover')
44+
cy.get('[data-cy="switch-testing-type"]').realHover()
3245
cy.contains('#tooltip-target > div', 'E2E Testing').should('be.visible')
3346
cy.get('[data-cy="switch-testing-type"]').trigger('mouseout')
3447

35-
cy.get('[data-e2e-href="/runs"]').trigger('mouseover')
48+
cy.get('[data-e2e-href="/runs"]').realHover()
3649
cy.contains('#tooltip-target > div', 'Runs').should('be.visible')
3750
cy.get('[data-e2e-href="/runs"]').trigger('mouseout')
3851
})
3952

4053
it('opens a modal to switch testing type', { viewportWidth: 1280 }, () => {
54+
mountComponent()
4155
cy.get('[data-cy="switch-testing-type"]').click()
4256
})
4357
})

packages/app/src/navigation/SidebarNavigation.vue

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,20 @@
44
class="relative flex flex-col bg-gray-1000 transition-all duration-300"
55
:class="mainStore.navBarExpanded ? 'w-248px' : 'w-64px'"
66
>
7-
<div
8-
class="absolute cursor-pointer w-16px bottom-0 top-0 left-full group"
7+
<button
8+
class="absolute cursor-pointer w-16px bottom-0 top-0 left-full group hocus:outline-transparent"
9+
role="button"
10+
aria-label="toggle navigation"
911
@click="mainStore.toggleNavBar"
1012
>
11-
<div class="w-16px origin-left transform scale-x-0 group-hover:scale-x-100 h-full transition-transform duration-300 flex items-center">
13+
<div class="w-16px origin-left transform scale-x-0 group-hocus:scale-x-100 h-full transition-transform duration-300 flex items-center">
1214
<div class="h-full w-3px bg-indigo-400" />
1315
<i-cy-chevron-right_x16
1416
class="icon-dark-indigo-400 h-16px w-16px"
1517
:class="mainStore.navBarExpanded ? 'transform rotate-180': ''"
1618
/>
1719
</div>
18-
</div>
20+
</button>
1921
<div class="flex flex-col flex-1 overflow-y-auto ">
2022
<SidebarTooltip
2123
class="flex items-center h-64px flex-shrink-0 border-b border-gray-900"

packages/app/src/runner/SpecRunner.vue

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,11 @@
2222
class="relative w-full"
2323
>
2424
<HideDuringScreenshot class="bg-white p-4">
25-
<SpecRunnerHeader :gql="props.gql" />
25+
<SpecRunnerHeader
26+
:gql="props.gql"
27+
:event-manager="eventManager"
28+
:get-aut-iframe="getAutIframeModel"
29+
/>
2630
</HideDuringScreenshot>
2731

2832
<RemoveClassesDuringScreenshotting

packages/app/src/runner/SpecRunnerHeader.spec.tsx

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
11
import SpecRunnerHeader from './SpecRunnerHeader.vue'
22
import { useAutStore } from '../store'
3-
import { SpecRunnerHeaderFragmentDoc } from '../generated/graphql-test'
3+
import { SpecRunnerHeaderFragment, SpecRunnerHeaderFragmentDoc } from '../generated/graphql-test'
4+
import { createEventManager, createTestAutIframe } from '../../cypress/e2e/support/ctSupport'
5+
6+
function renderWithGql (gqlVal: SpecRunnerHeaderFragment) {
7+
const eventManager = createEventManager()
8+
const autIframe = createTestAutIframe()
9+
10+
return (<SpecRunnerHeader gql={gqlVal}
11+
eventManager={eventManager}
12+
getAutIframe={() => autIframe} />)
13+
}
414

515
describe('SpecRunnerHeader', () => {
616
it('renders', () => {
@@ -9,49 +19,46 @@ describe('SpecRunnerHeader', () => {
919
autStore.updateUrl('http://localhost:4000')
1020
cy.mountFragment(SpecRunnerHeaderFragmentDoc, {
1121
render: (gqlVal) => {
12-
return <SpecRunnerHeader gql={gqlVal} />
22+
return renderWithGql(gqlVal)
1323
},
1424
})
1525
})
1626

17-
it('disabled selector playground and studio buttons when isRunning is true', () => {
27+
it('disabled selector playground button when isRunning is true', () => {
1828
const autStore = useAutStore()
1929

2030
autStore.setIsRunning(true)
2131

2232
cy.mountFragment(SpecRunnerHeaderFragmentDoc, {
2333
render: (gqlVal) => {
24-
return <SpecRunnerHeader gql={gqlVal} />
34+
return renderWithGql(gqlVal)
2535
},
2636
})
2737

28-
cy.get('[data-cy="header-studio"]').should('be.disabled')
2938
cy.get('[data-cy="header-selector"]').should('be.disabled')
3039
})
3140

32-
it('disabled selector playground and studio buttons when isLoading is true', () => {
41+
it('disabled selector playground button when isLoading is true', () => {
3342
const autStore = useAutStore()
3443

3544
autStore.setIsLoading(true)
3645

3746
cy.mountFragment(SpecRunnerHeaderFragmentDoc, {
3847
render: (gqlVal) => {
39-
return <SpecRunnerHeader gql={gqlVal} />
48+
return renderWithGql(gqlVal)
4049
},
4150
})
4251

43-
cy.get('[data-cy="header-studio"]').should('be.disabled')
4452
cy.get('[data-cy="header-selector"]').should('be.disabled')
4553
})
4654

47-
it('enables selector playground and studio buttons by default', () => {
55+
it('enables selector playground button by default', () => {
4856
cy.mountFragment(SpecRunnerHeaderFragmentDoc, {
4957
render: (gqlVal) => {
50-
return <SpecRunnerHeader gql={gqlVal} />
58+
return renderWithGql(gqlVal)
5159
},
5260
})
5361

54-
cy.get('[data-cy="header-studio"]').should('not.be.disabled')
5562
cy.get('[data-cy="header-selector"]').should('not.be.disabled')
5663
})
5764

@@ -65,7 +72,7 @@ describe('SpecRunnerHeader', () => {
6572
gql.currentTestingType = 'e2e'
6673
},
6774
render: (gqlVal) => {
68-
return <SpecRunnerHeader gql={gqlVal} />
75+
return renderWithGql(gqlVal)
6976
},
7077
})
7178

@@ -82,7 +89,7 @@ describe('SpecRunnerHeader', () => {
8289
gql.currentTestingType = 'component'
8390
},
8491
render: (gqlVal) => {
85-
return <SpecRunnerHeader gql={gqlVal} />
92+
return renderWithGql(gqlVal)
8693
},
8794
})
8895

@@ -98,7 +105,7 @@ describe('SpecRunnerHeader', () => {
98105
ctx.currentBrowser = ctx.browsers?.find((x) => x.displayName === 'Chrome') ?? null
99106
},
100107
render: (gqlVal) => {
101-
return <SpecRunnerHeader gql={gqlVal} />
108+
return renderWithGql(gqlVal)
102109
},
103110
})
104111

packages/app/src/runner/SpecRunnerHeader.vue

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,10 @@ import IconCrosshairsGPS from '~icons/mdi/crosshairs-gps'
7171
import Icon from '@packages/frontend-shared/src/components/Icon.vue'
7272
import type { SpecRunnerHeaderFragment } from '../generated/graphql'
7373
import SelectorPlayground from './selector-playground/SelectorPlayground.vue'
74-
import { getAutIframeModel, getEventManager } from '.'
74+
import { getAutIframeModel } from '.'
7575
import { useSelectorPlaygroundStore } from '../store/selector-playground-store'
76+
import type { EventManager } from './event-manager'
77+
import type { AutIframe } from './aut-iframe'
7678
7779
gql`
7880
fragment SpecRunnerHeader on CurrentProject {
@@ -93,11 +95,11 @@ fragment SpecRunnerHeader on CurrentProject {
9395
9496
const props = defineProps<{
9597
gql: SpecRunnerHeaderFragment
98+
eventManager: EventManager
99+
getAutIframe: () => AutIframe
96100
}>()
97101
98-
const eventManager = getEventManager()
99-
const autIframe = getAutIframeModel()
100-
const getAutIframe = getAutIframeModel
102+
const autIframe = props.getAutIframe()
101103
102104
const selectorPlaygroundStore = useSelectorPlaygroundStore()
103105

packages/app/src/runner/selector-playground/SelectorPlayground.spec.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ import { createEventManager, createTestAutIframe } from '../../../cypress/e2e/su
22
import { useSelectorPlaygroundStore } from '../../store/selector-playground-store'
33
import SelectorPlayground from './SelectorPlayground.vue'
44

5-
describe('SelectorPlayground', () => {
5+
// TODO: Test is failing due to Percy conflict
6+
// eslint-disable-next-line
7+
describe.skip('SelectorPlayground', () => {
68
const mountSelectorPlayground = (
79
eventManager = createEventManager(),
810
autIframe = createTestAutIframe(),
@@ -89,11 +91,11 @@ describe('SelectorPlayground', () => {
8991
cy.spy(autIframe, 'toggleSelectorHighlight')
9092

9193
cy.get('[data-cy="playground-selector"]').as('copy').clear().type('.foo-bar')
94+
9295
cy.get('@copy').click()
9396
cy.get('@copy').should('be.focused')
94-
cy.window().its('navigator.clipboard')
95-
.invoke('readText')
96-
.should('equal', '.foo-bar')
97+
98+
cy.get('@writeClipboard').should('have.been.calledWith', '.foo-bar')
9799
})
98100

99101
it('prints nothing to console when no selected elements found', () => {

packages/frontend-shared/cypress/support/mock-graphql/stubgql-Project.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export const createTestCurrentProject = (title: string, currentProject: Partial<
4141
},
4242
__typename: 'SpecConnection' as const,
4343
edges: [
44-
...randomComponents(200, 'Spec').map((c) => {
44+
...randomComponents(50, 'Spec').map((c) => {
4545
return {
4646
__typename: 'SpecEdge' as const,
4747
cursor: 'eoifjew',

packages/frontend-shared/src/gql-components/HeaderBar.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
:show-browsers="props.showBrowsers"
66
:page-name="pageName"
77
/>
8+
<div v-else />
89
</template>
910

1011
<script setup lang="ts">

0 commit comments

Comments
 (0)