merged
This commit is contained in:
commit
874654f0eb
15
.github/workflows/node-ci.yml
vendored
15
.github/workflows/node-ci.yml
vendored
|
@ -26,3 +26,18 @@ jobs:
|
|||
|
||||
- name: Test production build
|
||||
run: npm run build
|
||||
|
||||
- name: Install http-server
|
||||
run: npm install http-server
|
||||
|
||||
- name: Install e2e test dependencies
|
||||
run: npm run e2e:install
|
||||
|
||||
- name: Serve the build directory
|
||||
run: npx http-server ./.output/public -p 8080 --ssl --cert ./tests/certs/cert.pem --key ./tests/certs/key.pem &
|
||||
|
||||
# - name: Run e2e tests
|
||||
# run: npm run e2e:tests
|
||||
|
||||
- name: Run e2e tests
|
||||
run: npm run e2e:tests:ci
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
"start": "vinxi start",
|
||||
"codegen": "graphql-codegen",
|
||||
"e2e:tests": "npx playwright test --project=webkit",
|
||||
"e2e:tests:ci": "CI=true BASE_URL=https://127.0.0.1:8080 npx playwright test --project=webkit",
|
||||
"e2e:install": "npx playwright install webkit && npx playwright install-deps ",
|
||||
"fix": "npx @biomejs/biome check . --fix && stylelint **/*.{scss,css} --fix",
|
||||
"format": "npx @biomejs/biome format src/. --write",
|
||||
|
|
|
@ -65,7 +65,8 @@ export default defineConfig({
|
|||
],
|
||||
|
||||
/* Run local dev server before starting the tests */
|
||||
webServer: {
|
||||
/* If process env CI is set to false */
|
||||
webServer: process.env.CI ? undefined :{
|
||||
command: 'npm run dev',
|
||||
url: 'https://localhost:3000',
|
||||
ignoreHTTPSErrors: true,
|
||||
|
|
|
@ -44,7 +44,7 @@ async function waitForServer(url: string, timeout = 150000) {
|
|||
test.beforeAll(async ({ browser }) => {
|
||||
console.log('Waiting for the server to start...')
|
||||
await new Promise((resolve) => setTimeout(resolve, 5000))
|
||||
const baseURL = 'https://localhost:3000'
|
||||
const baseURL = process.env.BASE_URL || 'https://localhost:3000'
|
||||
await waitForServer(baseURL)
|
||||
page = await browser.newPage()
|
||||
test.setTimeout(150000)
|
||||
|
|
|
@ -44,7 +44,7 @@ async function waitForServer(url: string, timeout = 150000) {
|
|||
test.beforeAll(async ({ browser }) => {
|
||||
console.log('Waiting for the server to start...')
|
||||
await new Promise((resolve) => setTimeout(resolve, 5000))
|
||||
const baseURL = 'https://localhost:3000'
|
||||
const baseURL = process.env.BASE_URL || 'https://localhost:3000'
|
||||
await waitForServer(baseURL)
|
||||
page = await browser.newPage()
|
||||
test.setTimeout(150000)
|
||||
|
|
|
@ -46,7 +46,7 @@ async function waitForServer(url: string, timeout = 150000) {
|
|||
test.beforeAll(async ({ browser }) => {
|
||||
console.log('Waiting for the server to start...')
|
||||
await new Promise((resolve) => setTimeout(resolve, 5000))
|
||||
const baseURL = 'https://localhost:3000'
|
||||
const baseURL = process.env.BASE_URL || 'https://localhost:3000'
|
||||
await waitForServer(baseURL)
|
||||
context = await browser.newContext()
|
||||
page = await context.newPage()
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
import { expect, test } from '@playwright/test'
|
||||
|
||||
const baseHost = process.env.BASE_HOST || 'https://localhost:3000'
|
||||
|
||||
const pagesTitles: { [key: string]: RegExp } = {
|
||||
'/': /Дискурс/,
|
||||
'/feed': /Лента/,
|
||||
'/edit/new': /Выберите тип публикации/,
|
||||
'/guide/support': /Поддержите Дискурс/,
|
||||
'/author': /Авторы/,
|
||||
'/topic': /Темы и сюжеты/,
|
||||
'/inbox': /Входящие/
|
||||
}
|
||||
|
||||
Object.keys(pagesTitles).forEach((res: string) => {
|
||||
test(`страница ${res}`, async ({ page }) => {
|
||||
await page.goto(`${baseHost}${res}`)
|
||||
const title = pagesTitles[res]
|
||||
await expect(page).toHaveTitle(title)
|
||||
})
|
||||
})
|
|
@ -1,37 +0,0 @@
|
|||
import { chromium } from 'playwright'
|
||||
;(async () => {
|
||||
const browser = await chromium.launch()
|
||||
const context = await browser.newContext()
|
||||
|
||||
// Define the URLs to visit
|
||||
const pagesToVisit = [
|
||||
'https://localhost:3000/',
|
||||
'https://localhost:3000/feed',
|
||||
'https://localhost:3000/edit/new',
|
||||
'https://localhost:3000/guide/support',
|
||||
'https://localhost:3000/author',
|
||||
'https://localhost:3000/topic',
|
||||
'https://localhost:3000/inbox'
|
||||
]
|
||||
|
||||
// Loop through the pages and visit each one
|
||||
for (const pageUrl of pagesToVisit) {
|
||||
const page = await context.newPage()
|
||||
|
||||
// Log a message before visiting the page
|
||||
console.log(`Visiting page: ${pageUrl}`)
|
||||
|
||||
await page.goto(pageUrl)
|
||||
|
||||
// Add your test assertions here if needed
|
||||
|
||||
// Log a message after visiting the page
|
||||
console.log(`Finished visiting page: ${pageUrl}`)
|
||||
|
||||
// Close the page before moving to the next one
|
||||
await page.close()
|
||||
}
|
||||
|
||||
// Close the browser
|
||||
await browser.close()
|
||||
})()
|
31
tests/certs/cert.pem
Normal file
31
tests/certs/cert.pem
Normal file
|
@ -0,0 +1,31 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
52
tests/certs/key.pem
Normal file
52
tests/certs/key.pem
Normal file
|
@ -0,0 +1,52 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
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
|
||||
vwMHicF+PHK2KJ80a6pcZLNtDynD
|
||||
-----END PRIVATE KEY-----
|
|
@ -2,6 +2,8 @@
|
|||
import https from 'node:https'
|
||||
import { type Page, expect, test } from '@playwright/test'
|
||||
|
||||
const baseHost = process.env.BASE_URL || 'https://localhost:3000'
|
||||
|
||||
/* Global starting test config */
|
||||
|
||||
let page: Page
|
||||
|
@ -44,7 +46,7 @@ async function waitForServer(url: string, timeout = 150000) {
|
|||
test.beforeAll(async ({ browser }) => {
|
||||
console.log('Waiting for the server to start...')
|
||||
await new Promise((resolve) => setTimeout(resolve, 5000))
|
||||
const baseURL = 'https://localhost:3000'
|
||||
const baseURL = process.env.BASE_URL || 'https://localhost:3000'
|
||||
await waitForServer(baseURL)
|
||||
page = await browser.newPage()
|
||||
test.setTimeout(150000)
|
||||
|
|
Loading…
Reference in New Issue
Block a user