Repository: freeCodeCamp/freeCodeCamp
File: e2e/email-sign-up.spec.ts (TypeScript)

Code before:
    ).toHaveAttribute('aria-pressed', 'true');
  });
});

test.describe('Email sign-up page when user is signed in', () => {
  test.use({ storageState: 'playwright/.auth/certified-user.json' });

  test.beforeEach(async ({ page }) => {
    await page.route('*/**/user/get-session-user', async route => {
      const response = await route.fetch();
      const json = await response.json();

      // /email-sign-up is only accessible if `acceptedPrivacyTerms` is `false`.
      // We need to patch the response in order to access the page.
      json.user.certifieduser.acceptedPrivacyTerms = false;
      json.user.certifieduser.sendQuincyEmail = false;
      await route.fulfill({ json });
    });

    // Intercept the endpoint to prevent `acceptedPrivacyTerms` from being set
    await page.route('*/**/update-privacy-terms', async route => {
      const json = [{ message: 'flash.privacy-updated', type: 'success' }];
      await route.fulfill({ json });
    });

    await page.goto('/email-sign-up');
  });

  test("should disable Quincy's weekly newsletter if the user clicks No", async ({
    page
  }) => {
    await expect(page).toHaveTitle('Email Sign Up | freeCodeCamp.org');
    await expect(
      page.getByText(
        'freeCodeCamp is a proven path to your first software developer job.'
      )
    ).toBeVisible();

    const signupButton = page.getByRole('button', {
      name: translations.buttons['no-thanks']
    });

    await expect(signupButton).toBeVisible();
    await signupButton.click();

    // The user is signed in and automatically redirected to /learn after clicking the button.
    // We wait for the navigation to complete.
    await page.waitForURL('**/learn');
    await expect(
      page.getByRole('heading', { name: 'Welcome back, Full Stack User' })
    ).toBeVisible();

Review comment (suggestion):
This is needed both to ensure the tests are setup properly, and to override the seed data:

https://github.com/freeCodeCamp/freeCodeCamp/blob/10d5cbeb88e373091a60a2eb6bf8121781867b33/tools/scripts/seed/certified-user-data.js#L16

https://github.com/freeCodeCamp/freeCodeCamp/blob/10d5cbeb88e373091a60a2eb6bf8121781867b33/tools/scripts/seed/seed-demo-user.js#L100

Code after:
    ).toBeVisible();
    await expect(
      page.getByRole('button', { name: translations.buttons['yes-please'] })
    ).toHaveAttribute('aria-pressed', 'false');
    await expect(
      page.getByRole('button', { name: translations.buttons['no-thanks'] })
    ).toHaveAttribute('aria-pressed', 'true');
  });
});

test.describe('Email sign-up page when user is signed in', () => {
  test.use({ storageState: 'playwright/.auth/certified-user.json' });

  test.beforeEach(async ({ page, browserName }) => {
    test.skip(
      browserName === 'webkit',
      'user appears to not signed in on Webkit'
    );

    await page.route('*/**/user/get-session-user', async route => {
      const response = await route.fetch();
      const json = await response.json();

      // /email-sign-up is only accessible if `acceptedPrivacyTerms` is `false`.
      // We need to patch the response in order to access the page.
      json.user.certifieduser.acceptedPrivacyTerms = false;
      json.user.certifieduser.sendQuincyEmail = false;
      await route.fulfill({ json });
    });

    // Intercept the endpoint to prevent `acceptedPrivacyTerms` from being set
    await page.route('*/**/update-privacy-terms', async route => {
      const json = [{ message: 'flash.privacy-updated', type: 'success' }];
      await route.fulfill({ json });
    });

    await page.goto('/email-sign-up');
  });

  test("should disable Quincy's weekly newsletter if the user clicks No", async ({
    page,
    browserName
  }) => {
    test.skip(
      browserName === 'webkit',
      'user appears to not signed in on Webkit'
    );

    await expect(page).toHaveTitle('Email Sign Up | freeCodeCamp.org');
    await expect(
      page.getByText(