From c767d544bdcd32fcc257cd218ce5f9e6d0873b07 Mon Sep 17 00:00:00 2001 From: kimatata <117462761+kimatata@users.noreply.github.com> Date: Sun, 27 Apr 2025 19:47:14 +0900 Subject: [PATCH 1/3] fix: e2e.yml (#213) --- .github/workflows/e2e.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index aead76b..72e800b 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -22,11 +22,14 @@ jobs: run: | sudo apt install -y docker-compose + - name: Install dependencies + run: npm install + - name: Install Playwright - run: npx playwright install + run: npx playwright install --with-deps - name: Start docker containers - run: docker-compose up --build + run: docker-compose up --build -d - name: Run E2E tests run: npm run e2e From 5a55e5638775d7887371b8d5a66ad83afdca636f Mon Sep 17 00:00:00 2001 From: kimatata <117462761+kimatata@users.noreply.github.com> Date: Sun, 27 Apr 2025 20:58:54 +0900 Subject: [PATCH 2/3] feat: first user sign up E2E test (#214) --- e2e/first-user-signup.spec.ts | 39 +++++++++++++++++++++++++++++++++++ playwright.config.ts | 2 ++ 2 files changed, 41 insertions(+) create mode 100644 e2e/first-user-signup.spec.ts diff --git a/e2e/first-user-signup.spec.ts b/e2e/first-user-signup.spec.ts new file mode 100644 index 0000000..7bcac6f --- /dev/null +++ b/e2e/first-user-signup.spec.ts @@ -0,0 +1,39 @@ +import { test, expect } from '@playwright/test'; + +test('First User signup and create project', async ({ page }) => { + const screenshotDir = 'playwright-report/screenshots/first-user-signup'; + + // Move to Sign up page + await page.goto('http://localhost:8000/en/account/signup'); + + // Fill sign up form + await page.getByRole('textbox', { name: 'Email*' }).fill('user1@example.com'); + await page.getByRole('textbox', { name: 'User name*' }).fill('user1'); + await page.getByRole('textbox', { name: 'Password Password' }).fill('password'); + await page.getByRole('textbox', { name: 'Password (confirm)' }).fill('password'); + + // Sign up + await page.getByRole('button', { name: 'Sign up' }).click(); + await page.waitForURL('**/en/account'); + await page.screenshot({ path: `${screenshotDir}/after-sign-up.png`, fullPage: true }); + + // Move to projects page + await page.getByRole('button', { name: 'Find Projects' }).click(); + await page.waitForURL('**/en/projects'); + + // Create new project + await page.getByRole('button', { name: 'New Project' }).click(); + await page.getByLabel('Project Name').fill('sample project'); + await page.getByRole('button', { name: 'Create' }).click(); + + // Move to new project + const projectLink = await page.getByRole('link', { name: 'sample project' }); + await expect(projectLink).toBeVisible(); + await projectLink.click(); + await page.waitForURL('**/en/projects/1/home'); + + await page.screenshot({ + path: `${screenshotDir}/after-create-project.png`, + fullPage: true, + }); +}); diff --git a/playwright.config.ts b/playwright.config.ts index b5a4d55..0c41563 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -41,11 +41,13 @@ export default defineConfig({ { name: 'firefox', use: { ...devices['Desktop Firefox'] }, + testIgnore: '**/first-user-signup.spec.ts', }, { name: 'webkit', use: { ...devices['Desktop Safari'] }, + testIgnore: '**/first-user-signup.spec.ts', }, /* Test against mobile viewports. */ From 384bfbba60f4695ac8959f5386860d2ff16dd5df Mon Sep 17 00:00:00 2001 From: kimatata <117462761+kimatata@users.noreply.github.com> Date: Sun, 27 Apr 2025 21:11:52 +0900 Subject: [PATCH 3/3] feat: upload E2E test screenshots (#215) --- .github/workflows/e2e.yml | 7 ++++--- .gitignore | 1 + e2e/first-user-signup.spec.ts | 2 +- frontend/src/app/[locale]/HeaderNavbarMenu.tsx | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 72e800b..449e040 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -37,6 +37,7 @@ jobs: - uses: actions/upload-artifact@v4 if: always() with: - name: playwright-report - path: playwright-report/ - retention-days: 30 + name: e2e-report + path: | + playwright-report/ + playwright-screenshots/ diff --git a/.gitignore b/.gitignore index b040304..872c5fa 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,6 @@ coverage/ .env /test-results/ /playwright-report/ +/playwright-screenshots/ /blob-report/ /playwright/.cache/ diff --git a/e2e/first-user-signup.spec.ts b/e2e/first-user-signup.spec.ts index 7bcac6f..ef1958a 100644 --- a/e2e/first-user-signup.spec.ts +++ b/e2e/first-user-signup.spec.ts @@ -1,7 +1,7 @@ import { test, expect } from '@playwright/test'; test('First User signup and create project', async ({ page }) => { - const screenshotDir = 'playwright-report/screenshots/first-user-signup'; + const screenshotDir = 'playwright-screenshots/first-user-signup'; // Move to Sign up page await page.goto('http://localhost:8000/en/account/signup'); diff --git a/frontend/src/app/[locale]/HeaderNavbarMenu.tsx b/frontend/src/app/[locale]/HeaderNavbarMenu.tsx index 4b82596..40e7bb2 100644 --- a/frontend/src/app/[locale]/HeaderNavbarMenu.tsx +++ b/frontend/src/app/[locale]/HeaderNavbarMenu.tsx @@ -94,7 +94,7 @@ export default function HeaderNavbarMenu({ messages, locale }: Props) { - 1.0.0-beta.10 + 1.0.0-beta.11