diff --git a/.github/workflows/repo-checks.yml b/.github/workflows/repo-checks.yml index 4df2e6a21..a0e7582e2 100644 --- a/.github/workflows/repo-checks.yml +++ b/.github/workflows/repo-checks.yml @@ -60,3 +60,32 @@ jobs: tests/integration/auth.test.ts tests/integration/moderation.test.ts tests/integration/profile.test.ts + + e2e_tests: + name: E2E Tests + runs-on: ubuntu-latest + needs: check_code_quality + environment: dev + + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/setup-repo + + - name: Cache Node Modules + id: cache-node-modules + uses: actions/cache@v4 + with: + path: | + node_modules + key: modules-${{ hashFiles('package-lock.json') }} + + - name: Install Playwright Browsers + run: yarn playwright install --with-deps + - name: Run Playwright tests + run: yarn test:e2e:headless + - uses: actions/upload-artifact@v4 + if: ${{ !cancelled() }} + with: + name: playwright-report + path: playwright-report/ + retention-days: 30 diff --git a/components/search/testimony/TestimonyHit.tsx b/components/search/testimony/TestimonyHit.tsx index 201e7d714..5a3d4cace 100644 --- a/components/search/testimony/TestimonyHit.tsx +++ b/components/search/testimony/TestimonyHit.tsx @@ -37,7 +37,9 @@ const TestimonyResult = ({ hit }: { hit: Hit }) => { const isOrg = hit.authorRole === "organization" const writtenBy = isOrg || hit.public ? ( - {hit.fullName} + + {hit.fullName} + ) : ( hit.fullName ) diff --git a/playwright.config.ts b/playwright.config.ts index f58a111fe..2cb15200e 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -80,6 +80,7 @@ export default defineConfig({ webServer: { command: "yarn dev:up", url: "http://localhost:3000/", - reuseExistingServer: !process.env.CI + reuseExistingServer: !process.env.CI, + timeout: 100000 } }) diff --git a/tests/e2e/adminPage.spec.ts b/tests/e2e/adminPage.spec.ts index 1f0c728ec..524a7a5c3 100644 --- a/tests/e2e/adminPage.spec.ts +++ b/tests/e2e/adminPage.spec.ts @@ -21,6 +21,13 @@ test.describe.serial("Admin Page", () => { context = await browser.newContext() page = await context.newPage() + console.log({ + username: process.env.TEST_ADMIN_USERNAME, + pw: process.env.TEST_ADMIN_PASSWORD, + url: process.env.APP_API_URL, + ci: process.env.ci + }) + // Fetch the admin credentials and application URL from the environment variables const adminEmail = process.env.TEST_ADMIN_USERNAME const adminPassword = process.env.TEST_ADMIN_PASSWORD diff --git a/tests/e2e/browse-bills.spec.ts b/tests/e2e/browse-bills.spec.ts index 84303aec2..726b3949b 100644 --- a/tests/e2e/browse-bills.spec.ts +++ b/tests/e2e/browse-bills.spec.ts @@ -30,7 +30,7 @@ test.describe("Search result test", () => { const queryFilter = await billpage.queryFilter - await expect(queryFilter).toContainText("query:") + await expect(queryFilter).toContainText("Query:") await expect(queryFilter).toContainText(searchTerm) }) diff --git a/tests/e2e/testimony.spec.ts b/tests/e2e/testimony.spec.ts index ab57f6012..8146dd903 100644 --- a/tests/e2e/testimony.spec.ts +++ b/tests/e2e/testimony.spec.ts @@ -34,7 +34,7 @@ test.describe("Testimony Search", () => { await testimonyPage.search(queryText) const { queryFilterItem, resultsCountText } = testimonyPage - await expect(queryFilterItem).toContainText("query:") + await expect(queryFilterItem).toContainText("Query:") await expect(queryFilterItem).toContainText(queryText) await expect(resultsCountText).toBeVisible() }) @@ -129,21 +129,19 @@ test.describe("Testimony Filtering", () => { }) test("should filter by author", async ({ page }) => { - const writtenByText = await page - .getByText(/Written by/) - .first() - .textContent() - expect(writtenByText).toBeTruthy() - - if (writtenByText) { - const authorName = writtenByText.slice(11) + const authorName = await page.getByTestId("author").first().textContent() + expect(authorName).toBeTruthy() + + if (authorName) { await page.getByRole("checkbox", { name: authorName }).check() const testimonyPage = new TestimonyPage(page) await expect(testimonyPage.authorFilterItem).toContainText(authorName) + const encodedAuthorName = encodeURIComponent(authorName).replace( + "'", + "%27" + ) await expect(page).toHaveURL( - new RegExp( - `.*authorDisplayName%5D%5B0%5D=${encodeURIComponent(authorName)}` - ) + new RegExp(`.*authorDisplayName%5D%5B0%5D=${encodedAuthorName}`) ) } })