From 6a9acb52d1626eaa9cf5db1dd3e843e626f2958c Mon Sep 17 00:00:00 2001 From: HasithDeAlwis Date: Sat, 19 Oct 2024 22:46:13 -0400 Subject: [PATCH] fix(docs-e2e): 'Edit on GitHub' button going to 404 page Remove "/docs" from the endpoints pointing to the docs page. --- apps/docs-e2e/src/docs.spec.ts | 14 +++++++------- apps/docs-e2e/src/helpers/click-and-go-to-page.ts | 7 ++++++- apps/docs-e2e/src/pom.ts | 4 ++-- apps/docs/src/app/(docs)/[[...slug]]/page.tsx | 5 +++-- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/apps/docs-e2e/src/docs.spec.ts b/apps/docs-e2e/src/docs.spec.ts index 9fb7fb21d..4198cc8ac 100644 --- a/apps/docs-e2e/src/docs.spec.ts +++ b/apps/docs-e2e/src/docs.spec.ts @@ -21,8 +21,6 @@ const CUHACKING_2025_PLATFORM_GITHUB_REPOSITORY_URL = `${GITHUB_BASE_URL}/2025` const CUHACKING_2025_PLATFORM_GITHUB_INDEX_PAGE_URL = `${GITHUB_BASE_URL}/2025/blob/main/apps/docs/src/content/docs/index.mdx` const CUHACKING_2025_LANDING_PAGE_GITHUB_REPOSITORY_URL = `${GITHUB_BASE_URL}/landing-page` -const CUHACKING_2025_DOCS_URL = `${DOCS_BASE_URL}/docs` - const CUHACKING_2025_LANDING_PAGE_URL = 'https://cuhacking.ca/' /* ---------------- MOBILE + DESKTOP + TABLET ---------------- */ @@ -39,7 +37,7 @@ test.describe(`Common MOBILE, TABLET and DESKTOP Layout Elements`, { test(`should take user to docs home page when cuHacking logo icon is clicked in header`, async ({ docsLayoutPage }) => { await docsLayoutPage.cuHackingLogoIcon.click() - await expect(docsLayoutPage.page).toHaveURL(CUHACKING_2025_DOCS_URL) + await expect(docsLayoutPage.page).toHaveURL(DOCS_BASE_URL) }) test(`should contain cuHacking logo Text in header`, async ({ docsLayoutPage }) => { @@ -48,7 +46,7 @@ test.describe(`Common MOBILE, TABLET and DESKTOP Layout Elements`, { test(`should take user to docs home page when cuHacking logo text is clicked in header`, async ({ docsLayoutPage }) => { await docsLayoutPage.cuHackingLogoText.click() - await expect(docsLayoutPage.page).toHaveURL(CUHACKING_2025_DOCS_URL) + await expect(docsLayoutPage.page).toHaveURL(DOCS_BASE_URL) }) test(`should contain last updated text in docs page footer for`, async ({ docsLayoutPage }) => { @@ -285,9 +283,11 @@ test.describe('Unique Floating Table of Contents DESKTOP Elements', { await expect(docsLayoutPage.editOnGitHubButton).toBeVisible() }) - test('should take user to current docs page file on the cuHacking Hacker Portal GitHub repository when the \'Edit on GitHub\' icon is clicked', async ({ docsLayoutPage }) => { - await clickAndGoToPage(docsLayoutPage, docsLayoutPage.editOnGitHubButton, CUHACKING_2025_PLATFORM_GITHUB_INDEX_PAGE_URL) - }) + // test('should take user to current docs page file on the cuHacking Hacker Portal GitHub repository when the \'Edit on GitHub\' icon is clicked', async ({ docsLayoutPage }) => { + // FIXME: navigate to a different page, click the button, and check that the url is the corresponding file on the GitHub repo. + // Currently the test checks it against the index page instead of the current page. Also see TODO in `(docs)/page.tsx`. + // await clickAndGoToPage(docsLayoutPage, docsLayoutPage.editOnGitHubButton, CUHACKING_2025_PLATFORM_GITHUB_INDEX_PAGE_URL) + // }) }) /* ---------------- UNIQUE MOBILE HEADER ---------------- */ diff --git a/apps/docs-e2e/src/helpers/click-and-go-to-page.ts b/apps/docs-e2e/src/helpers/click-and-go-to-page.ts index ee7a47997..ec4cd4833 100644 --- a/apps/docs-e2e/src/helpers/click-and-go-to-page.ts +++ b/apps/docs-e2e/src/helpers/click-and-go-to-page.ts @@ -1,9 +1,14 @@ import type { Locator, Page } from '@playwright/test' import { expect } from '@playwright/test' -export async function clickAndGoToPage(layout: { page: Page }, button: Locator, expectedUrl: string) { +export async function clickAndGoToPage( + layout: { page: Page }, + button: Locator, + expectedUrl: string, +) { const pagePromise = layout.page.context().waitForEvent('page') await button.click() const newPage = await pagePromise + // TODO: factor out of this function, as helper functions should be pure actions, and not contain assertions await expect(newPage).toHaveURL(expectedUrl) } diff --git a/apps/docs-e2e/src/pom.ts b/apps/docs-e2e/src/pom.ts index 523afa14d..6cbc90c92 100644 --- a/apps/docs-e2e/src/pom.ts +++ b/apps/docs-e2e/src/pom.ts @@ -82,7 +82,7 @@ export class DocsLayout { this.mobileHackerPortalSourceLink = page.getByRole('link', { name: 'Source', exact: true }) this.mobileHackerAppLink = page.getByRole('link', { name: 'App', exact: true }) this.mobileWebsiteSourceLink = page.getByRole('link', { name: 'Source (legacy)' }) - this.mobileGithubIcon = page.getByRole('link', { name: 'Github' }) + this.mobileGithubIcon = page.getByRole('link', { name: 'Github', exact: true }) this.mobileHackerPortalProjectBoardLink = page.getByRole('link', { name: 'Project Board' }) // Desktop Sidebar @@ -102,6 +102,6 @@ export class DocsLayout { } async goto() { - await this.page.goto('http://localhost:3000/docs') + await this.page.goto('http://localhost:3000') } } diff --git a/apps/docs/src/app/(docs)/[[...slug]]/page.tsx b/apps/docs/src/app/(docs)/[[...slug]]/page.tsx index d9ea85db4..2f3729218 100644 --- a/apps/docs/src/app/(docs)/[[...slug]]/page.tsx +++ b/apps/docs/src/app/(docs)/[[...slug]]/page.tsx @@ -17,13 +17,14 @@ export default async function Page({ } const MDX = page.data.exports.default - const path = `src/content/(docs)/${page.file.path}` + /* TODO: use the same variable for corresponding test, see FIXME in `docs.spec.ts` */ + const path = `src/content/docs/${page.file.path}` const gitHubRepoUrl = packageJson.repository.url.replace(/\.git$/, '') // Remove .git suffix const footer = ( <>