diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright_admin.yml similarity index 90% rename from .github/workflows/playwright.yml rename to .github/workflows/playwright_admin.yml index 09d860a6f..3454164e6 100644 --- a/.github/workflows/playwright.yml +++ b/.github/workflows/playwright_admin.yml @@ -1,4 +1,4 @@ -name: Playwright Tests +name: Playwright Admin Tests on: push: branches: [main, master] @@ -24,7 +24,7 @@ jobs: - name: docker compose run run: docker-compose up -d - name: Run Playwright tests - run: pnpm exec playwright test + run: pnpm exec playwright test admin.spec.ts - uses: actions/upload-artifact@v3 if: always() with: diff --git a/.github/workflows/playwright_visitor.yml b/.github/workflows/playwright_visitor.yml new file mode 100644 index 000000000..e76c20e3e --- /dev/null +++ b/.github/workflows/playwright_visitor.yml @@ -0,0 +1,33 @@ +name: Playwright Visitor Tests +on: + push: + branches: [main, master] + pull_request: + branches: [main, master] +jobs: + test: + timeout-minutes: 60 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + - name: Create .env file + run: cp .env.e2e .env + - name: Install dependencies + run: npm install -g pnpm && pnpm install + - name: Generate Prisma Client + run: pnpm prisma generate + - name: Build Frontend App + run: pnpm build:e2e + - name: docker compose run + run: docker-compose up -d + - name: Run Playwright tests + run: pnpm exec playwright test visitor.spec.ts + - uses: actions/upload-artifact@v3 + if: always() + with: + name: playwright-report + path: playwright-report/ + retention-days: 30 diff --git a/e2e/admin_basic.spec.ts b/e2e/admin.spec.ts similarity index 100% rename from e2e/admin_basic.spec.ts rename to e2e/admin.spec.ts diff --git a/e2e/visitor.spec.ts b/e2e/visitor.spec.ts new file mode 100644 index 000000000..dd3ec66c3 --- /dev/null +++ b/e2e/visitor.spec.ts @@ -0,0 +1,20 @@ +import util from 'node:util' + +const exec = util.promisify(require('node:child_process').exec) +import { test, expect } from '@playwright/test' + +test.beforeAll(async () => { + await exec('pnpm db:reset') +}) + +test.describe('visitor basic', () => { + test('show blog title', async ({ page }) => { + await page.goto('http://localhost:3000/') + await expect(page).toHaveURL('http://localhost:3000/') + await expect(page.getByRole('heading')).toHaveText('ReadList') + }) +}) + +test.afterAll(async () => { + await exec('pnpm db:reset') +})