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

Code before:
test.beforeEach(async ({ page }) => {
  await page.goto('/email-sign-up');
});

test.describe('Email sign-up page', () => {
  test('The page renders with correct title', async ({ page }) => {
    await expect(page).toHaveTitle(`Email Sign Up | freeCodeCamp.org`);
  });

  test('The page renders the correct content', async ({ page }) => {
    await expect(
      page.getByText(
        'freeCodeCamp is a proven path to your first software developer job.'
      )
    ).toBeVisible();
  });

  test('The sign up button renders and functions', async ({ page }) => {
    const button = page.getByTestId('email-sign-up-button');

    await expect(button).toBeVisible();

    await button.click();

    await expect(page).toHaveURL(/.*\/learn\/?$/);
  });
});


Review comment (suggestion):
```suggestion
  test('should render correctly', 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 button = page.getByTestId('email-sign-up-button');
    await expect(button).toBeVisible();
    await button.click();
    await expect(page).toHaveURL(/.*\/learn\/?$/);
  });
```
We can probably combine all of these into a single rendering test.

Code after:
import translations from '../client/i18n/locales/english/translations.json';

const apiLocation = process.env.API_LOCATION || 'http://localhost:3000';

test.describe('Email sign-up page when user is not signed in', () => {
  test.use({ storageState: { cookies: [], origins: [] } });

  test.beforeEach(async ({ page }) => {
    // 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 not enable Quincy's weekly newsletter when the user clicks the sign up button", 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(
        'freeCodeCamp is a proven path to your first software developer job.'
      )
    ).toBeVisible();

    const signupLink = page.getByRole('link', {
      name: translations.buttons['sign-up-email-list']
    });

    await expect(signupLink).toBeVisible();
    await expect(signupLink).toHaveAttribute('href', `${apiLocation}/signin`);
    await signupLink.click();

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

    await page.goto('/settings');
    await expect(
      page.getByRole('group', { name: translations.settings.email.weekly })