From 9ffb1d5b43ce474653ca4b40dcc268edb027e730 Mon Sep 17 00:00:00 2001 From: Ilenia <26656284+ilenia-magoni@users.noreply.github.com> Date: Wed, 26 Jun 2024 16:14:12 +0200 Subject: [PATCH] Revert c240bd4 (#55333) --- e2e/challenge-reset-modal.spec.ts | 26 +++++++++++++--------- e2e/donation-modal.spec.ts | 8 +++++-- e2e/editor.spec.ts | 5 +++-- e2e/lower-jaw.spec.ts | 6 +++-- e2e/navigation-from-last-challenge.spec.ts | 3 ++- e2e/output.spec.ts | 10 +++++---- e2e/progress-bar.spec.ts | 10 +++++---- e2e/projects.spec.ts | 3 ++- e2e/utils/editor.ts | 15 +++++++++++-- 9 files changed, 58 insertions(+), 28 deletions(-) diff --git a/e2e/challenge-reset-modal.spec.ts b/e2e/challenge-reset-modal.spec.ts index 62ccad0bc30..c148c99597b 100644 --- a/e2e/challenge-reset-modal.spec.ts +++ b/e2e/challenge-reset-modal.spec.ts @@ -43,7 +43,7 @@ test('should render the modal content correctly', async ({ page }) => { await expectToRenderResetModal(page); }); -test('User can reset challenge', async ({ page, isMobile }) => { +test('User can reset challenge', async ({ page, isMobile, browserName }) => { const initialText = 'CatPhotoApp'; const initialFrame = page .frameLocator('iframe[title="challenge preview"]') @@ -64,7 +64,7 @@ test('User can reset challenge', async ({ page, isMobile }) => { // Modify the text in the editor pane, clearing first, otherwise the existing // text will be selected before typing await focusEditor({ page, isMobile }); - await clearEditor({ page }); + await clearEditor({ page, browserName }); await getEditors(page).fill(updatedText); await expect(updatedFrame).toBeVisible({ timeout: 10000 }); @@ -160,7 +160,11 @@ test('should close when the user clicks the close button', async ({ page }) => { ).toBeHidden(); }); -test('User can reset on a multi-file project', async ({ page, isMobile }) => { +test('User can reset on a multi-file project', async ({ + page, + isMobile, + browserName +}) => { const sampleText = 'function palindrome() { return true; }'; await page.goto( @@ -168,7 +172,7 @@ test('User can reset on a multi-file project', async ({ page, isMobile }) => { ); await focusEditor({ page, isMobile }); - await clearEditor({ page }); + await clearEditor({ page, browserName }); await getEditors(page).fill(sampleText); await expect(page.getByText(sampleText)).toBeVisible(); @@ -198,7 +202,8 @@ test.describe('Signed in user', () => { test('User can reset on a multi-file project after reloading and saving', async ({ page, - isMobile + isMobile, + browserName }) => { test.setTimeout(60000); const savedText = 'function palindrome() { return true; }'; @@ -210,7 +215,7 @@ test.describe('Signed in user', () => { // This first edit should reappear after the reset await focusEditor({ page, isMobile }); - await clearEditor({ page }); + await clearEditor({ page, browserName }); await getEditors(page).fill(savedText); await page.keyboard.press('Control+S'); @@ -218,7 +223,7 @@ test.describe('Signed in user', () => { // This second edit should be reset await focusEditor({ page, isMobile }); - await clearEditor({ page }); + await clearEditor({ page, browserName }); await getEditors(page).fill(updatedText); await page @@ -237,7 +242,8 @@ test.describe('Signed in user', () => { test('User can reset on a multi-file project without reloading', async ({ page, - isMobile + isMobile, + browserName }) => { test.setTimeout(60000); const savedText = 'function palindrome() { return true; }'; @@ -249,13 +255,13 @@ test.describe('Signed in user', () => { // This first edit should reappear after the reset await focusEditor({ page, isMobile }); - await clearEditor({ page }); + await clearEditor({ page, browserName }); await getEditors(page).fill(savedText); await page.keyboard.press('Control+S'); // This second edit should be reset await focusEditor({ page, isMobile }); - await clearEditor({ page }); + await clearEditor({ page, browserName }); await getEditors(page).fill(updatedText); await page diff --git a/e2e/donation-modal.spec.ts b/e2e/donation-modal.spec.ts index eb2a6190dea..b4b85405d43 100644 --- a/e2e/donation-modal.spec.ts +++ b/e2e/donation-modal.spec.ts @@ -36,9 +36,11 @@ const completeFrontEndCert = async (page: Page) => { const completeThreeChallenges = async ({ page, + browserName, isMobile }: { page: Page; + browserName: string; isMobile: boolean; }) => { await page.goto( @@ -64,7 +66,7 @@ const completeThreeChallenges = async ({ await page.waitForURL(challenge.url); await focusEditor({ page, isMobile }); - await clearEditor({ page }); + await clearEditor({ page, browserName }); await page.evaluate( async contents => await navigator.clipboard.writeText(contents), @@ -80,9 +82,11 @@ const completeThreeChallenges = async ({ const completeTenChallenges = async ({ page, + browserName, isMobile }: { page: Page; + browserName: string; isMobile: boolean; }) => { await page.goto( @@ -136,7 +140,7 @@ const completeTenChallenges = async ({ await page.waitForURL(challenge.url); await focusEditor({ page, isMobile }); - await clearEditor({ page }); + await clearEditor({ page, browserName }); await page.evaluate( async contents => await navigator.clipboard.writeText(contents), diff --git a/e2e/editor.spec.ts b/e2e/editor.spec.ts index 6c58f7a51ea..5cc6674c89e 100644 --- a/e2e/editor.spec.ts +++ b/e2e/editor.spec.ts @@ -33,14 +33,15 @@ test.describe('Editor Component', () => { test.describe('Python Terminal', () => { test('should display error message when the user enters invalid code', async ({ page, - isMobile + isMobile, + browserName }) => { await page.goto( 'learn/scientific-computing-with-python/learn-string-manipulation-by-building-a-cipher/step-2' ); await focusEditor({ page, isMobile }); - await clearEditor({ page }); + await clearEditor({ page, browserName }); // Then enter invalid code await page.keyboard.insertText('def'); const preview = page.getByTestId('preview-pane'); diff --git a/e2e/lower-jaw.spec.ts b/e2e/lower-jaw.spec.ts index 6c510f3a1f8..2eff3c000f9 100644 --- a/e2e/lower-jaw.spec.ts +++ b/e2e/lower-jaw.spec.ts @@ -79,6 +79,7 @@ test('Checks hotkeys when instruction is focused', async ({ test('Focuses on the submit button after tests passed', async ({ page, + browserName, isMobile }) => { const editor = getEditors(page); @@ -87,7 +88,7 @@ test('Focuses on the submit button after tests passed', async ({ name: 'Submit and go to next challenge' }); await focusEditor({ page, isMobile }); - await clearEditor({ page }); + await clearEditor({ page, browserName }); await editor.fill( '

Cat Photos

\n

See more cat photos in our gallery.

' @@ -99,6 +100,7 @@ test('Focuses on the submit button after tests passed', async ({ test('Prompts unauthenticated user to sign in to save progress', async ({ page, + browserName, isMobile }) => { await signout(page); @@ -109,7 +111,7 @@ test('Prompts unauthenticated user to sign in to save progress', async ({ name: 'Sign in to save your progress' }); await focusEditor({ page, isMobile }); - await clearEditor({ page }); + await clearEditor({ page, browserName }); await editor.fill( '

Cat Photos

\n

See more cat photos in our gallery.

' diff --git a/e2e/navigation-from-last-challenge.spec.ts b/e2e/navigation-from-last-challenge.spec.ts index 26a87c474ef..3bb60e9fb0a 100644 --- a/e2e/navigation-from-last-challenge.spec.ts +++ b/e2e/navigation-from-last-challenge.spec.ts @@ -61,12 +61,13 @@ test.describe('Should take you to the next superblock (with editor solution)', ( test('at the end of a superblock should take you to the superblock page with the current block hash', async ({ page, isMobile, + browserName, context }) => { await context.grantPermissions(['clipboard-read', 'clipboard-write']); await page.goto(rwdChallenge.url); await focusEditor({ page, isMobile }); - await clearEditor({ page }); + await clearEditor({ page, browserName }); await page.evaluate( async solution => await navigator.clipboard.writeText(solution.content), diff --git a/e2e/output.spec.ts b/e2e/output.spec.ts index ec9018bdba9..ca475307f7f 100644 --- a/e2e/output.spec.ts +++ b/e2e/output.spec.ts @@ -70,14 +70,15 @@ test.describe('For classic challenges', () => { test('shows test output when the tests are run', async ({ page, - isMobile + isMobile, + browserName }) => { const closeButton = page.getByRole('button', { name: 'Close' }); await expect(page).toHaveTitle( 'Basic HTML and HTML5: Say Hello to HTML Elements |' + ' freeCodeCamp.org' ); - await clearEditor({ page }); + await clearEditor({ browserName, page }); await insertTextInCodeEditor({ page, isMobile, @@ -94,10 +95,11 @@ test.describe('For classic challenges', () => { test('shows test output when the tests are triggered by the keyboard', async ({ page, - isMobile + isMobile, + browserName }) => { const closeButton = page.getByRole('button', { name: 'Close' }); - await clearEditor({ page }); + await clearEditor({ browserName, page }); await insertTextInCodeEditor({ page, isMobile, diff --git a/e2e/progress-bar.spec.ts b/e2e/progress-bar.spec.ts index 5ef253d15cc..f9f3caaf72c 100644 --- a/e2e/progress-bar.spec.ts +++ b/e2e/progress-bar.spec.ts @@ -6,7 +6,8 @@ test.use({ storageState: 'playwright/.auth/certified-user.json' }); test.describe('Progress bar component', () => { test('Should appear with the correct content after the user has submitted their code', async ({ page, - isMobile + isMobile, + browserName }) => { await page.goto( '/learn/2022/responsive-web-design/learn-html-by-building-a-cat-photo-app/step-3' @@ -15,7 +16,7 @@ test.describe('Progress bar component', () => { // large. There's a bug that means `scrollIntoView` does not work in the // editor and so we have to pick less verbose challenges until that's fixed. await focusEditor({ page, isMobile }); - await clearEditor({ page }); + await clearEditor({ page, browserName }); await page.keyboard.insertText( '

CatPhotoApp

Cat Photos

See more cat photos in our gallery.

' @@ -35,13 +36,14 @@ test.describe('Progress bar component', () => { test('should appear in the completion modal after user has submitted their code', async ({ page, - isMobile + isMobile, + browserName }) => { await page.goto( '/learn/javascript-algorithms-and-data-structures/basic-javascript/declare-javascript-variables' ); await focusEditor({ page, isMobile }); - await clearEditor({ page }); + await clearEditor({ page, browserName }); await page.keyboard.insertText('var myName;'); diff --git a/e2e/projects.spec.ts b/e2e/projects.spec.ts index 089be619e79..4f289d12d00 100644 --- a/e2e/projects.spec.ts +++ b/e2e/projects.spec.ts @@ -110,6 +110,7 @@ test.describe('JavaScript projects can be submitted and then viewed in /settings test('projects are submitted and viewed correctly', async ({ page, + browserName, isMobile, request, context @@ -148,7 +149,7 @@ test.describe('JavaScript projects can be submitted and then viewed in /settings ); await focusEditor({ page, isMobile }); - await clearEditor({ page }); + await clearEditor({ page, browserName }); await page.evaluate( async contents => await navigator.clipboard.writeText(contents), diff --git a/e2e/utils/editor.ts b/e2e/utils/editor.ts index 23794a2098c..5572c3a6b52 100644 --- a/e2e/utils/editor.ts +++ b/e2e/utils/editor.ts @@ -24,7 +24,18 @@ export const focusEditor = async ({ await getEditors(page).focus(); }; -export async function clearEditor({ page }: { page: Page }) { - await page.keyboard.press('ControlOrMeta+a'); +export async function clearEditor({ + page, + browserName +}: { + page: Page; + browserName: string; +}) { + // TODO: replace with ControlOrMeta when it's supported + if (browserName === 'webkit') { + await page.keyboard.press('Meta+a'); + } else { + await page.keyboard.press('Control+a'); + } await page.keyboard.press('Backspace'); }