diff --git a/Makefile b/Makefile index 69112d1b0f8..e48b5cc096d 100644 --- a/Makefile +++ b/Makefile @@ -148,7 +148,7 @@ endif .PHONY: test-e2e-desktop test-e2e-desktop: install build ## Run the desktop e2e tests ifdef E2E_GREP - npm run test:e2e:desktop -- --grep="$(E2E_GREP)" --max-failures=$(E2E_FAILURES) $(PW_ARGS) + npm run test:e2e:desktop -- --grep="$(E2E_GREP)" --max-failures=$(E2E_FAILURES) --retries 5 $(PW_ARGS) else npm run test:e2e:desktop -- --workers='100%' $(PW_ARGS) endif diff --git a/e2e/playwright/fixtures/toolbarFixture.ts b/e2e/playwright/fixtures/toolbarFixture.ts index e5306832cbf..0e50a9aee9e 100644 --- a/e2e/playwright/fixtures/toolbarFixture.ts +++ b/e2e/playwright/fixtures/toolbarFixture.ts @@ -108,6 +108,27 @@ export class ToolbarFixture { startSketchPlaneSelection = async () => doAndWaitForImageDiff(this.page, () => this.startSketchBtn.click(), 500) + selectDefaultPlane = async ( + plane: 'Front plane' | 'Top plane' | 'Right plane' + ) => { + const isFtOpen = await this.checkIfFeatureTreePaneIsOpen() + if (!isFtOpen) { + await this.openFeatureTreePane() + } + await this.page.getByRole('button', { name: plane }).click() + if (!isFtOpen) { + await this.closeFeatureTreePane() + } + await this.page.waitForTimeout(1000) + } + + startSketchOnDefaultPlane = async ( + plane: 'Front plane' | 'Top plane' | 'Right plane' + ) => { + await this.startSketchPlaneSelection() + await this.selectDefaultPlane(plane) + } + waitUntilSketchingReady = async () => { await expect(this.gizmoDisabled).toBeVisible() } diff --git a/e2e/playwright/point-click.spec.ts b/e2e/playwright/point-click.spec.ts index 280b66241b9..d4b8f50f0dc 100644 --- a/e2e/playwright/point-click.spec.ts +++ b/e2e/playwright/point-click.spec.ts @@ -789,8 +789,7 @@ openSketch = startSketchOn(XY) highlightedHeaderArg: 'plane', commandName: 'Offset plane', }) - const xz = await toolbar.getFeatureTreeOperation('Front plane', 0) - await xz.click() + await toolbar.selectDefaultPlane('Front plane') await cmdBar.expectState({ stage: 'arguments', currentArgKey: 'offset', diff --git a/e2e/playwright/sketch-tests.spec.ts b/e2e/playwright/sketch-tests.spec.ts index 5df82663a6d..c1aaced76b6 100644 --- a/e2e/playwright/sketch-tests.spec.ts +++ b/e2e/playwright/sketch-tests.spec.ts @@ -198,8 +198,7 @@ test.describe('Sketch tests', () => { await test.step('Open feature tree and select Front plane (XZ)', async () => { await toolbar.openFeatureTreePane() - - await page.getByRole('button', { name: 'Front plane' }).click() + await toolbar.selectDefaultPlane('Front plane') await page.waitForTimeout(600) @@ -1033,8 +1032,6 @@ profile001 = startProfile(sketch001, at=[0, 0]) page.getByRole('button', { name: 'Start Sketch' }) ).not.toBeDisabled() - const [selectXZPlane] = scene.makeMouseHelpers(650, 150) - const [startProfile1] = scene.makeMouseHelpers(568, 150) const [endLineStartTanArc] = scene.makeMouseHelpers(701, 158) const [endArcStartLine] = scene.makeMouseHelpers(745, 189) @@ -1087,8 +1084,7 @@ profile001 = startProfile(sketch001, at=[0, 0]) 306 ) - await toolbar.startSketchPlaneSelection() - await selectXZPlane() + await toolbar.startSketchOnDefaultPlane('Front plane') // timeout wait for engine animation is unavoidable await page.waitForTimeout(600) await editor.expectEditor.toContain('sketch001 = startSketchOn(XZ)') @@ -1399,8 +1395,7 @@ extrude001 = extrude(profile003, length = 5) await scene.settled(cmdBar) await toolbar.openFeatureTreePane() - await toolbar.startSketchPlaneSelection() - await page.getByRole('button', { name: 'Front plane' }).click() + await toolbar.startSketchOnDefaultPlane('Front plane') // timeout wait for engine animation is unavoidable await page.waitForTimeout(600) diff --git a/e2e/playwright/snap-to-grid.spec.ts b/e2e/playwright/snap-to-grid.spec.ts index a3377758aed..ce952e94747 100644 --- a/e2e/playwright/snap-to-grid.spec.ts +++ b/e2e/playwright/snap-to-grid.spec.ts @@ -12,9 +12,7 @@ test.describe('Snap to Grid', () => { await homePage.goToModelingScene() // Enter sketch mode and select a default axis from the Feature Tree - await toolbar.startSketchBtn.click() - await toolbar.openFeatureTreePane() - await page.getByRole('button', { name: 'Front plane' }).click() + await toolbar.startSketchOnDefaultPlane('Front plane') await page.waitForTimeout(600) // Ensure the line tool is equipped diff --git a/e2e/playwright/snapshot-tests.spec.ts b/e2e/playwright/snapshot-tests.spec.ts index eb144921910..84d4a22190c 100644 --- a/e2e/playwright/snapshot-tests.spec.ts +++ b/e2e/playwright/snapshot-tests.spec.ts @@ -134,15 +134,7 @@ test( await u.waitForAuthSkipAppStart() // Start a sketch - await u.doAndWaitForImageDiff( - () => page.getByRole('button', { name: 'Start Sketch' }).click(), - 200 - ) - - // Select a plane - await toolbar.openFeatureTreePane() - await page.getByRole('button', { name: 'Front plane' }).click() - await toolbar.closeFeatureTreePane() + await toolbar.startSketchOnDefaultPlane('Front plane') await editor.expectEditor.toContain(`sketch001 = startSketchOn(XZ)`) // Equip the rectangle tool diff --git a/e2e/playwright/test-network-and-connection-issues.spec.ts b/e2e/playwright/test-network-and-connection-issues.spec.ts index 6c416b7b430..fdc17643cb4 100644 --- a/e2e/playwright/test-network-and-connection-issues.spec.ts +++ b/e2e/playwright/test-network-and-connection-issues.spec.ts @@ -104,14 +104,7 @@ test.describe('Test network related behaviors', () => { await u.openDebugPanel() // click on "Start Sketch" button - await u.clearCommandLogs() - await page.getByRole('button', { name: 'Start Sketch' }).click() - await page.waitForTimeout(100) - - // select a plane - await toolbar.openFeatureTreePane() - await page.getByRole('button', { name: 'Front plane' }).click() - await toolbar.closeFeatureTreePane() + await toolbar.startSketchOnDefaultPlane('Front plane') await expect(page.locator('.cm-content')).toHaveText( `@settings(defaultLengthUnit = in)sketch001 = startSketchOn(XZ)` diff --git a/e2e/playwright/testing-selections.spec.ts b/e2e/playwright/testing-selections.spec.ts index 23f6486c67c..c77edf9aad8 100644 --- a/e2e/playwright/testing-selections.spec.ts +++ b/e2e/playwright/testing-selections.spec.ts @@ -264,16 +264,7 @@ test.describe('Testing selections', () => { ).toBeVisible() // click on "Start Sketch" button - await u.clearCommandLogs() - await u.doAndWaitForImageDiff( - () => page.getByRole('button', { name: 'Start Sketch' }).click(), - 200 - ) - - // Clicks the XZ Plane - await toolbar.openFeatureTreePane() - await page.getByRole('button', { name: 'Front plane' }).click() - await toolbar.closeFeatureTreePane() + await toolbar.startSketchOnDefaultPlane('Front plane') await expect(page.locator('.cm-content')).toHaveText( `@settings(defaultLengthUnit = in)sketch001 = startSketchOn(XZ)`