Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run full E2E test suite on PRs #4996

Merged
merged 21 commits into from
Sep 26, 2024
Merged
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
edd158c
feat: Add Github workflow to run the full e2e test suite on PRs
flozia Aug 30, 2024
e088792
chore: Run E2E tests in parallel
flozia Sep 2, 2024
7e40cfd
chore: Run E2E tests in parallel
flozia Sep 3, 2024
553f582
Merge branch 'main' into e2e-convert-cron-to-pr
flozia Sep 3, 2024
a540ed9
chore: Update success URLs for E2E tests
flozia Sep 3, 2024
91068dc
chore: Update success URLs for E2E tests
flozia Sep 3, 2024
848b7dd
Merge branch 'main' into e2e-convert-cron-to-pr
flozia Sep 4, 2024
c37e0b3
merge: main -> e2e-convert-cron-to-pr
flozia Sep 4, 2024
7ee1006
wip: Debug E2E test failures in CI
flozia Sep 4, 2024
fd6bc55
chore: Run purchase E2E tests only on stage for now
flozia Sep 5, 2024
9aa5e62
Merge branch 'main' into e2e-convert-cron-to-pr
flozia Sep 17, 2024
f68bda3
chore: Only run E2E test for PR opened agains main
flozia Sep 17, 2024
8d3813b
fix: Update node version for full E2E test suite
flozia Sep 17, 2024
7e556ce
Merge branch 'main' into e2e-convert-cron-to-pr
flozia Sep 18, 2024
cb8591a
Merge branch 'main' into e2e-convert-cron-to-pr
flozia Sep 18, 2024
53b6dfa
Merge branch 'main' into e2e-convert-cron-to-pr
flozia Sep 19, 2024
52d8b8f
chore: Lower timeout for full E2E test suite
flozia Sep 25, 2024
b0b4d0b
merge: main -> e2e-convert-cron-to-pr
flozia Sep 25, 2024
319fc47
chore: Remove auth path for pre Plus users in E2E
flozia Sep 26, 2024
bc7962c
chore: Rename E2E test workflows
flozia Sep 26, 2024
a1d45f4
Merge branch 'main' into e2e-convert-cron-to-pr
mansaj Sep 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .env
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,8 @@ E2E_TEST_ACCOUNT_EMAIL_ZERO_BROKERS=
E2E_TEST_ACCOUNT_EMAIL_ZERO_BREACHES_ZERO_BROKERS=
E2E_TEST_ACCOUNT_EMAIL_EXPOSURES_STARTED=

E2E_TEST_PAYPAL_LOGIN =
E2E_TEST_PAYPAL_PASSWORD =
E2E_TEST_PAYPAL_LOGIN=
E2E_TEST_PAYPAL_PASSWORD=

# Monitor Premium features
# Link to start user on the subscription process. PREMIUM_ENABLED must be set to `true`.
Expand Down
99 changes: 99 additions & 0 deletions .github/workflows/e2e_pr_full.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
name: Monitor E2E Test Suite (full)
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
e2e-tests:
timeout-minutes: 60
flozia marked this conversation as resolved.
Show resolved Hide resolved
runs-on: ubuntu-latest
# Service containers to run with `container-job`
services:
# Label used to access the service container
postgres:
flozia marked this conversation as resolved.
Show resolved Hide resolved
# Docker Hub image
image: postgres
# Provide the password for postgres
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: blurts
# Set health checks to wait until postgres has started
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432

steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20.9.x

- name: Install dependencies
run: npm ci
- name: Setting up postgres
run: npm run db:migrate
env:
DATABASE_URL: postgres://postgres:postgres@localhost:5432/blurts
- name: Store Playwright's Version
run: |
# Get the current Playwright version listed in package.json
PLAYWRIGHT_VERSION=$(npx playwright --version | sed 's/Version //')
echo "Playwright Version: $PLAYWRIGHT_VERSION"
echo "PLAYWRIGHT_VERSION=$PLAYWRIGHT_VERSION" >> $GITHUB_ENV
- name: Cache Playwright Browsers for Playwright's Version
id: cache-playwright-browsers
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: playwright-browsers-${{ env.PLAYWRIGHT_VERSION }}

- name: Setup Playwright Browser
if: steps.cache-playwright-browsers.outputs.cache-hit != 'true'
run: npx playwright install --with-deps

- name: Run Playwright tests
if: github.actor != 'dependabot[bot]'
run: npm run e2e -- --update-snapshots
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doesn't this make visual regression tests always succeed, and hence not catch any issues?

Suggested change
run: npm run e2e -- --update-snapshots
run: npm run e2e

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is right! This is the same configuration we are using from the cronjob running the full E2E test suite. Happy to update this later, but for now I’d like to focus on catching functional test failure.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Works for me, I created https://mozilla-hub.atlassian.net/browse/MNTOR-3655 to follow up.

timeout-minutes: 40
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They're running a lot faster than this now, right? If so, we might want to catch stalling tests (or execution speed regressions) earlier?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That’s right. I halved the value 20 minutes for now. If we still see the tests performing consistently way below that, we can decrease to 10.

env:
E2E_TEST_ENV: local
E2E_TEST_BASE_URL: http://localhost:6060
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Potential for a small improvement: if this env var is unset, auto-detect it based on E2E_TEST_ENV?

Copy link
Collaborator Author

@flozia flozia Sep 26, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right now we rely on all those env variables being set here. For easier debugging and for consistent behavior the env variables were taken over from the workflow that runs the daily cronjob on stage.

There is a task to audit and consolidate the workflow env variables as a next step.

E2E_TEST_ACCOUNT_EMAIL: ${{ secrets.E2E_TEST_ACCOUNT_EMAIL }}
E2E_TEST_ACCOUNT_EMAIL_ZERO_BREACHES: ${{ secrets.E2E_TEST_ACCOUNT_EMAIL_ZERO_BREACHES }}
E2E_TEST_ACCOUNT_EMAIL_EXPOSURES_STARTED: ${{ secrets.E2E_TEST_ACCOUNT_EMAIL_EXPOSURES_STARTED }}
E2E_TEST_ACCOUNT_PASSWORD: ${{ secrets.E2E_TEST_ACCOUNT_PASSWORD }}
E2E_TEST_PAYPAL_LOGIN: ${{ secrets.E2E_TEST_PAYPAL_LOGIN }}
E2E_TEST_PAYPAL_PASSWORD: ${{ secrets.E2E_TEST_PAYPAL_PASSWORD }}
Comment on lines +67 to +72
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we just add these to .env? I don't think they're sensitive right - worst case, someone can abuse them to make our e2e tests fail.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sensitive but I think we'd want to keep them private. Someone can reset the password for these emails and it'd be annoying for us.

ADMINS: ${{ secrets.ADMINS }}
OAUTH_CLIENT_SECRET: ${{ secrets.OAUTH_CLIENT_SECRET_LOCAL }}
OAUTH_ACCOUNT_URI: ${{ secrets.OAUTH_ACCOUNT_URI }}
ONEREP_API_KEY: ${{ secrets.ONEREP_API_KEY }}
NEXTAUTH_SECRET: ${{ secrets.NEXTAUTH_SECRET }}
NEXTAUTH_URL: ${{ secrets.NEXTAUTH_URL }}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one is also already set in .env I think.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See comment above: #4996 (comment).

DATABASE_URL: postgres://postgres:postgres@localhost:5432/blurts
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doesn't need to be set either, right? Since it's already set in .env?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See comment above: #4996 (comment).

HIBP_KANON_API_TOKEN: ${{ secrets.HIBP_KANON_API_TOKEN }}
HIBP_API_TOKEN: ${{ secrets.HIBP_API_TOKEN }}
HIBP_KANON_API_ROOT: "http://localhost:6060/api/mock/hibp"
ONEREP_API_BASE: "http://localhost:6060/api/mock/onerep/"
Comment on lines +82 to +83
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the tests assume these mock URLs, do they even need to be configurable?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See comment above: #4996 (comment).

PREMIUM_PRODUCT_ID: ${{ secrets.STAGE_PREMIUM_PRODUCT_ID }}
PREMIUM_PLAN_ID_MONTHLY_US: ${{ secrets.STAGE_PREMIUM_PLAN_ID_MONTHLY_US }}
PREMIUM_PLAN_ID_YEARLY_US: ${{ secrets.STAGE_PREMIUM_PLAN_ID_YEARLY_US }}
Comment on lines +84 to +86
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think these all are secret, so maybe we could add them to .env?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See comment above: #4996 (comment).

REDIS_URL: "redis://redis.mock"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Likewise this is already set in .env I think?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See comment above: #4996 (comment).

- uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 30
- uses: actions/upload-artifact@v4
if: always()
with:
name: test-results
path: src/e2e/test-results/
retention-days: 30
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Monitor e2e Smoke Tests
name: Monitor E2E Test Suite (smoke)
on:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@flozia are we comfortable deleting this yml as a part of this PR?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mansaj I think the renaming should not cause any issues or what do you think?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Renaming wouldn't cause issue, I'm more asking if we can delete the smoke PR workflow

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mansaj Yes, we can delete the smoke test suite soon. I'd like to have keep it for now and leave it mandatory for merging PR’s. The full test suite will be not mandatory until we better learn about and fix some of the cery flaky tests.

push:
branches: [ main ]
Expand Down Expand Up @@ -46,7 +46,6 @@ jobs:
PLAYWRIGHT_VERSION=$(npx playwright --version | sed 's/Version //')
echo "Playwright Version: $PLAYWRIGHT_VERSION"
echo "PLAYWRIGHT_VERSION=$PLAYWRIGHT_VERSION" >> $GITHUB_ENV

- name: Cache Playwright Browsers for Playwright's Version
id: cache-playwright-browsers
uses: actions/cache@v4
Expand All @@ -69,7 +68,7 @@ jobs:
E2E_TEST_ACCOUNT_EMAIL_ZERO_BREACHES: ${{ secrets.E2E_TEST_ACCOUNT_EMAIL_ZERO_BREACHES }}
E2E_TEST_ACCOUNT_EMAIL_EXPOSURES_STARTED: ${{ secrets.E2E_TEST_ACCOUNT_EMAIL_EXPOSURES_STARTED }}
E2E_TEST_ACCOUNT_PASSWORD: ${{ secrets.E2E_TEST_ACCOUNT_PASSWORD }}
E2E_TEST_PAYPAL_LOGIN: ${{ secrets.E2E_TEST_PAYPAL_LOGIN }}
E2E_TEST_PAYPAL_LOGIN: ${{ secrets.E2E_TEST_PAYPAL_LOGIN }}
E2E_TEST_PAYPAL_PASSWORD: ${{ secrets.E2E_TEST_PAYPAL_PASSWORD }}
ADMINS: ${{ secrets.ADMINS }}
OAUTH_CLIENT_SECRET: ${{ secrets.OAUTH_CLIENT_SECRET_LOCAL }}
Expand All @@ -82,9 +81,6 @@ jobs:
HIBP_API_TOKEN: ${{ secrets.HIBP_API_TOKEN }}
HIBP_KANON_API_ROOT: "http://localhost:6060/api/mock/hibp"
ONEREP_API_BASE: "http://localhost:6060/api/mock/onerep/"
# MNTOR-3516: Our tests are currently set up to expect accounts to act like
# old user accounts, so let's pretend they all are:
BROKER_SCAN_RELEASE_DATE: "3000-12-31"
REDIS_URL: "redis://redis.mock"
mansaj marked this conversation as resolved.
Show resolved Hide resolved
flozia marked this conversation as resolved.
Show resolved Hide resolved
- uses: actions/upload-artifact@v4
if: always()
Expand Down
10 changes: 6 additions & 4 deletions playwright.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,14 @@ export default defineConfig({
/* Fail the build on CI if you accidentally left test.only in the source code. */
forbidOnly: !!process.env.CI,

/* Limit the number of failures */
maxFailures: 1,
mansaj marked this conversation as resolved.
Show resolved Hide resolved

/* Retry on CI only */
retries: process.env.CI ? 1 : 0,

/* Opt out of parallel tests on CI. */
workers: process.env.CI ? 1 : undefined,
/* Use a custom percentage of available wokers in CI and use default locally. */
workers: process.env.CI ? "75%" : undefined,
mansaj marked this conversation as resolved.
Show resolved Hide resolved

/* Reporter to use. See https://playwright.dev/docs/test-reporters */
reporter: process.env.CI ? [['github'], ['html']] : 'html',
Expand All @@ -65,8 +68,7 @@ export default defineConfig({
actionTimeout: 0,

/* Base URL to use in actions like `await page.goto('/')`. */
baseURL: process.env.E2E_TEST_BASE_URL ?? 'https://stage.firefoxmonitor.nonprod.cloudops.mozgcp.net',
// baseURL: 'http://localhost:6060',
baseURL: process.env.E2E_TEST_BASE_URL,
flozia marked this conversation as resolved.
Show resolved Hide resolved

/* automatically take screenshot only on failures */
screenshot: 'only-on-failure',
Expand Down
22 changes: 4 additions & 18 deletions src/app/functions/server/isPrePlusUser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import "server-only";
import { Session } from "next-auth";
import { parseIso8601Datetime } from "../../../utils/parse";
import { isPrePlusDate } from "../universal/isPrePlusDate";

/**
* Determine whether the user's account predates Monitor Plus
Expand All @@ -20,22 +20,8 @@ export function isPrePlusUser(user: Session["user"]): boolean {
return false;
}

const brokerScanReleaseDateParts = (
process.env.BROKER_SCAN_RELEASE_DATE ?? ""
).split("-");
if (brokerScanReleaseDateParts[0] === "") {
brokerScanReleaseDateParts[0] = "2023";
}
const brokerScanReleaseDate = new Date(
Date.UTC(
Number.parseInt(brokerScanReleaseDateParts[0], 10),
Number.parseInt(brokerScanReleaseDateParts[1] ?? "12", 10) - 1,
Number.parseInt(brokerScanReleaseDateParts[2] ?? "05", 10),
),
);

return (
(parseIso8601Datetime(user.subscriber.created_at)?.getTime() ?? 0) <
brokerScanReleaseDate.getTime()
return isPrePlusDate(
process.env.BROKER_SCAN_RELEASE_DATE ?? "",
user.subscriber.created_at,
);
}
27 changes: 27 additions & 0 deletions src/app/functions/universal/isPrePlusDate.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */

import { parseIso8601Datetime } from "../../../utils/parse";

export function isPrePlusDate(
plusReleaseDateString: string,
dateStringToCompare: string,
) {
const brokerScanReleaseDateParts = plusReleaseDateString.split("-");
if (brokerScanReleaseDateParts[0] === "") {
brokerScanReleaseDateParts[0] = "2023";
}
const brokerScanReleaseDate = new Date(
Date.UTC(
Number.parseInt(brokerScanReleaseDateParts[0], 10),
Number.parseInt(brokerScanReleaseDateParts[1] ?? "12", 10) - 1,
Number.parseInt(brokerScanReleaseDateParts[2] ?? "05", 10),
),
);

return (
(parseIso8601Datetime(dateStringToCompare)?.getTime() ?? 0) <
brokerScanReleaseDate.getTime()
);
}
2 changes: 1 addition & 1 deletion src/e2e/pages/purchasePage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ export class PurchasePage {
(await this.planDetails.textContent()) as string,
);
expect(planDetails).toContain(
`${process.env.E2E_TEST_ENV === "prod" ? "yearly" : "every 2 months"}`,
`${process.env.E2E_TEST_ENV !== "production" ? "every 2 months" : "yearly"}`,
);
}

Expand Down
15 changes: 14 additions & 1 deletion src/e2e/pages/welcomeScanPage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ export class WelcomePage {
readonly modalConfirmButton: Locator;
readonly modalEditButton: Locator;

readonly findExposuresTitle: Locator;

constructor(page: Page) {
this.page = page;

Expand Down Expand Up @@ -67,9 +69,11 @@ export class WelcomePage {
this.isThisCorrectModal = page.getByLabel("Is this correct?");
this.modalConfirmButton = page.getByRole("button", { name: "Confirm" });
this.modalEditButton = page.getByRole("button", { name: "Edit" });

this.findExposuresTitle = page.getByText("Scanning for exposures…");
}

async goThroughFirstScan() {
async goThroughFirstScan(options: { skipLoader: boolean }) {
// confirm get started step elements
expect(await this.getStartedStep.count()).toEqual(3);
await expect(this.page.getByText("Get started")).toBeVisible();
Expand All @@ -88,6 +92,15 @@ export class WelcomePage {
await this.findExposuresButton.click();

await this.modalConfirmButton.click();
await this.findExposuresTitle.waitFor();

// reloading page skips the loader and routes directly to the dashboard
if (options.skipLoader) {
Vinnl marked this conversation as resolved.
Show resolved Hide resolved
// wait for scan to be finished before reloading the page
await this.page.waitForTimeout(10000);
await this.page.reload();
}

// Waiting for scan to complete
const dashboardPage = new DashboardPage(this.page);
await dashboardPage.actionNeededTab.waitFor();
Expand Down
20 changes: 13 additions & 7 deletions src/e2e/specs/auth.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */

import { isPrePlusDate } from "../../app/functions/universal/isPrePlusDate.js";
import { test, expect } from "../fixtures/basePage.js";

test.describe(`${process.env.E2E_TEST_ENV} - Authentication flow verification @smoke`, () => {
Expand All @@ -14,7 +15,7 @@ test.describe(`${process.env.E2E_TEST_ENV} - Authentication flow verification @s
authPage,
landingPage,
}, testInfo) => {
// speed up test by ignore non necessary requests
// speed up test by ignoring non-necessary requests
await page.route(/(analytics)/, async (route) => {
await route.abort();
});
Expand All @@ -23,15 +24,20 @@ test.describe(`${process.env.E2E_TEST_ENV} - Authentication flow verification @s
await landingPage.goToSignIn();

// Fill out sign up form
const randomEmail = `${Date.now()}[email protected]`;
const currentTimestamp = Date.now();
const randomEmail = `${currentTimestamp}[email protected]`;
await authPage.signUp(randomEmail, page);

// assert successful login
const successUrl =
process.env.E2E_TEST_ENV === "local"
? "/user/dashboard"
: "/user/welcome";
expect(page.url()).toBe(`${process.env.E2E_TEST_BASE_URL}${successUrl}`);
const successUrlSlugs = isPrePlusDate(
flozia marked this conversation as resolved.
Show resolved Hide resolved
process.env.BROKER_SCAN_RELEASE_DATE ?? "",
new Date(currentTimestamp).toUTCString(),
)
? "/user/dashboard"
Vinnl marked this conversation as resolved.
Show resolved Hide resolved
: "/user/welcome";
expect(page.url()).toBe(
`${process.env.E2E_TEST_BASE_URL}${successUrlSlugs}`,
);

await testInfo.attach(
`${process.env.E2E_TEST_ENV}-signup-monitor-dashboard.png`,
Expand Down
23 changes: 20 additions & 3 deletions src/e2e/specs/breachResolution.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,30 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */

import { test, expect } from "../fixtures/basePage.js";
import { checkAuthState } from "../utils/helpers.js";

// bypass login
test.use({ storageState: "./e2e/storageState.json" });
test.describe(`${process.env.E2E_TEST_ENV} - Breaches Dashboard - Headers`, () => {
test.beforeEach(async ({ dashboardPage, welcomePage, page }) => {
await dashboardPage.open();

try {
await checkAuthState(page);
} catch {
console.log("[E2E_LOG] - No fxa auth required, proceeding...");
}

// if we landed on the welcome flow a new user who is eligible for premium
// and needs to go through their first scan
const isWelcomeFlow =
page.url() === `${process.env.E2E_TEST_BASE_URL}/user/welcome`;
if (isWelcomeFlow) {
expect(page.url()).toContain("/user/welcome");
await welcomePage.goThroughFirstScan({ skipLoader: true });
}
});

test("Verify that the site header is displayed correctly for signed in users", async ({
dataBreachPage,
}) => {
Expand Down Expand Up @@ -89,9 +109,6 @@ test.describe(`${process.env.E2E_TEST_ENV} - Breaches Dashboard - Headers`, () =
"https://testrail.stage.mozaws.net/index.php?/cases/view/2095103",
});

// open dashboard page
await dashboardPage.open();

// get expected links
const links = dashboardPage.dashboardLinks();

Expand Down
Loading
Loading