Merge pull request #164 from danny-avila/workflow

ci(playwright.yml): add Playwright tests workflow
This commit is contained in:
Danny Avila 2023-04-06 19:43:36 -04:00 committed by GitHub
commit e1c6517b8f
4 changed files with 77 additions and 5 deletions

72
.github/workflows/playwright.yml vendored Normal file
View file

@ -0,0 +1,72 @@
name: Playwright Tests
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
tests_e2e:
name: Run end-to-end tests
timeout-minutes: 60
runs-on: ubuntu-latest
env:
BINGAI_TOKEN: ${{ secrets.BINGAI_TOKEN }}
CHATGPT_TOKEN: ${{ secrets.CHATGPT_TOKEN }}
MONGO_URI: ${{ secrets.MONGO_URI }}
OPENAI_KEY: ${{ secrets.OPENAI_KEY }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
cache: 'npm'
- name: Cache API dependencies
uses: actions/cache@v2
with:
path: ./api/node_modules
key: api-${{ runner.os }}-node-${{ hashFiles('./api/package-lock.json') }}
restore-keys: |
api-${{ runner.os }}-node-
- name: Install API dependencies
working-directory: ./api
run: npm ci
- name: Cache Client dependencies
uses: actions/cache@v2
with:
path: ./client/node_modules
key: client-${{ runner.os }}-node-${{ hashFiles('./client/package-lock.json') }}
restore-keys: |
client-${{ runner.os }}-node-
- name: Install Client dependencies
working-directory: ./client
run: npm ci
- name: Build Client
working-directory: ./client
run: npm run build
- name: Install global dependencies
run: npm ci
- name: Install Playwright Browsers
run: npx playwright install --with-deps
- name: Start API server
working-directory: ./api
run: |
npm run start &
sleep 10 # Wait for the server to start
- name: Run Playwright tests
run: npx playwright test
- uses: actions/upload-artifact@v3
if: always()
with:
name: playwright-report
path: e2e/playwright-report/
retention-days: 30

View file

@ -32,7 +32,7 @@ export default function Landing() {
return ( return (
<div className="flex h-full flex-col items-center overflow-y-auto pt-0 text-sm dark:bg-gray-800"> <div className="flex h-full flex-col items-center overflow-y-auto pt-0 text-sm dark:bg-gray-800">
<div className="w-full px-6 text-gray-800 dark:text-gray-100 md:flex md:max-w-2xl md:flex-col lg:max-w-3xl"> <div className="w-full px-6 text-gray-800 dark:text-gray-100 md:flex md:max-w-2xl md:flex-col lg:max-w-3xl">
<h1 className="mt-6 ml-auto mr-auto mb-10 flex items-center justify-center gap-2 text-center text-4xl font-semibold sm:mb-16 md:mt-[10vh]"> <h1 id="landing-title" className="mt-6 ml-auto mr-auto mb-10 flex items-center justify-center gap-2 text-center text-4xl font-semibold sm:mb-16 md:mt-[10vh]">
ChatGPT Clone ChatGPT Clone
</h1> </h1>
<div className="items-start gap-3.5 text-center md:flex"> <div className="items-start gap-3.5 text-center md:flex">

View file

@ -20,7 +20,7 @@ export default defineConfig({
], ],
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
use: { use: {
baseURL: 'http:/localhost:3080', baseURL: 'http://localhost:3080',
video: 'on-first-retry', video: 'on-first-retry',
trace: 'retain-on-failure', trace: 'retain-on-failure',
headless: true, headless: true,

View file

@ -1,7 +1,7 @@
import {expect, test} from '@playwright/test'; import {expect, test} from '@playwright/test';
test('landing page', async ({page}) => { test('landing page', async ({page}) => {
await page.goto('/'); await page.goto('http://localhost:3080/');
expect (await page.title()).toBe('ChatGPT Clone'); // expect (await page.title()).toBe('ChatGPT Clone');
expect (await page.textContent('h1')).toBe('ChatGPT Clone'); expect (await page.textContent('#landing-title')).toBe('ChatGPT Clone');
}); });