diff --git a/package.json b/package.json index e2c4af09..7fbda3cc 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "codegen": "graphql-codegen", "e2e:tests": "npx playwright test --project=webkit", "e2e:install": "npx playwright install webkit && npx playwright install-deps ", - "fix": "npm run check:code:fix && stylelint **/*.{scss,css} --fix", + "fix": "npx @biomejs/biome check . --fix && stylelint **/*.{scss,css} --fix", "format": "npx @biomejs/biome format src/. --write", "postinstall": "npm run codegen && npx patch-package", "typecheck": "tsc --noEmit" @@ -118,9 +118,6 @@ "idb": "^8.0.0", "mailgun.js": "^10.2.1" }, - "trustedDependencies": [ - "@biomejs/biome" - ], "engines": { "node": "20.x" } diff --git a/playwright.config.ts b/playwright.config.ts index 5cae497a..0d7f20e1 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -38,7 +38,6 @@ export default defineConfig({ /* Configure projects for major browsers */ projects: [ - { name: 'webkit', use: { ...devices['Desktop Safari'] } @@ -63,7 +62,7 @@ export default defineConfig({ // name: 'Google Chrome', // use: { ...devices['Desktop Chrome'], channel: 'chrome' }, // }, - ] + ], /* Run local dev server before starting the tests */ webServer: { @@ -71,6 +70,6 @@ export default defineConfig({ url: 'https://localhost:3000', ignoreHTTPSErrors: true, reuseExistingServer: !process.env.CI, - timeout: 5 * 60 * 1000, - }, + timeout: 5 * 60 * 1000 + } }) diff --git a/src/graphql/client/core.ts b/src/graphql/client/core.ts index 8b137891..e69de29b 100644 --- a/src/graphql/client/core.ts +++ b/src/graphql/client/core.ts @@ -1 +0,0 @@ - diff --git a/tests/auth-drafts-actions.spec.ts b/tests/auth-drafts-actions.spec.ts index f060d748..07c6a82e 100644 --- a/tests/auth-drafts-actions.spec.ts +++ b/tests/auth-drafts-actions.spec.ts @@ -1,76 +1,81 @@ -import { test, expect, type Page } from '@playwright/test'; -import https from 'https'; - +// biome-ignore lint/correctness/noNodejsModules: +import https from 'node:https' +import { type Page, expect, test } from '@playwright/test' /* Global starting test config */ -let page: Page; +let page: Page function httpsGet(url: string): Promise { return new Promise((resolve, reject) => { - https.get(url, { - rejectUnauthorized: false // Ignore SSL certificate errors - }, (res) => { - if (res.statusCode === 200) { - resolve(); - } else { - reject(new Error(`Request failed with status code ${res.statusCode}`)); - } - }).on('error', (error) => { - reject(error); - }); - }); + https + .get( + url, + { + rejectUnauthorized: false // Ignore SSL certificate errors + }, + (res) => { + if (res.statusCode === 200) { + resolve() + } else { + reject(new Error(`Request failed with status code ${res.statusCode}`)) + } + } + ) + .on('error', (error) => { + reject(error) + }) + }) } -async function waitForServer(url: string, timeout: number = 150000) { - const start = Date.now(); +async function waitForServer(url: string, timeout = 150000) { + const start = Date.now() while (Date.now() - start < timeout) { try { - await httpsGet(url); - return true; + await httpsGet(url) + return true } catch (error) { // Ignore errors and try again - console.log (`Error fetching ${url}: ${error.message}`); + console.log(`Error fetching ${url}: ${error}`) } - await new Promise((resolve) => setTimeout(resolve, 1000)); + await new Promise((resolve) => setTimeout(resolve, 1000)) } - throw new Error(`Server at ${url} did not start within ${timeout} ms`); + throw new Error(`Server at ${url} did not start within ${timeout} ms`) } test.beforeAll(async ({ browser }) => { - console.log('Waiting for the server to start...'); - await new Promise((resolve) => setTimeout(resolve, 5000)); - const baseURL = 'https://localhost:3000'; - await waitForServer(baseURL); - page = await browser.newPage(); - test.setTimeout(150000); - await page.goto(baseURL); - await expect(page).toHaveTitle(/Дискурс/); - console.log('Localhost server started successfully!'); - await page.close(); - }); + console.log('Waiting for the server to start...') + await new Promise((resolve) => setTimeout(resolve, 5000)) + const baseURL = 'https://localhost:3000' + await waitForServer(baseURL) + page = await browser.newPage() + test.setTimeout(150000) + await page.goto(baseURL) + await expect(page).toHaveTitle(/Дискурс/) + console.log('Localhost server started successfully!') + await page.close() +}) test.afterAll(async () => { - await page.close(); - }); - + await page.close() +}) /* TESTS section */ test.beforeEach(async ({ page }) => { - await page.goto(`/`); - test.setTimeout(80000); - await page.getByRole('link', { name: 'Войти' }).click(); - await page.getByPlaceholder('Почта').click(); - await page.getByPlaceholder('Почта').fill('guests@discours.io'); - await page.getByPlaceholder('Пароль').click(); - await page.getByPlaceholder('Пароль').fill('Gue$tP@ss'); - await page.getByRole('button', { name: 'Войти' }).click(); -}); + await page.goto('/') + test.setTimeout(80000) + await page.getByRole('link', { name: 'Войти' }).click() + await page.getByPlaceholder('Почта').click() + await page.getByPlaceholder('Почта').fill('guests@discours.io') + await page.getByPlaceholder('Пароль').click() + await page.getByPlaceholder('Пароль').fill('Gue$tP@ss') + await page.getByRole('button', { name: 'Войти' }).click() +}) test.describe('*****Undone***** Drafts - article', () => { - test('Open /create', async ({ page }) => { - await page.goto(`/create`); - await expect(page).toHaveTitle('Выберите тип публикации'); - }); -}); + test('Open /edit/new', async ({ page }) => { + await page.goto('/edit/new') + await expect(page).toHaveTitle('Выберите тип публикации') + }) +}) /* test('Create article', async ({ page }) => { await page.goto(`/create`); @@ -78,7 +83,7 @@ test.describe('*****Undone***** Drafts - article', () => { }); test('Check Draft', async ({ page }) => { - + }); */ /* test('Drafts - create literature', async ({ page }) => { @@ -121,8 +126,7 @@ test('Check Draft', async ({ page }) => { Check is it created }); */ - /* test('Post topic', async ({ page }) => { Open Draft Post -});*/ \ No newline at end of file +});*/ diff --git a/tests/auth-topics-actions.spec.ts b/tests/auth-topics-actions.spec.ts index 4e4ad070..391de1c7 100644 --- a/tests/auth-topics-actions.spec.ts +++ b/tests/auth-topics-actions.spec.ts @@ -1,115 +1,128 @@ -import { test, expect, type Page } from '@playwright/test'; -import https from 'https'; - +// biome-ignore lint/correctness/noNodejsModules: +import https from 'node:https' +import { type Page, expect, test } from '@playwright/test' /* Global starting test config */ -let page: Page; +let page: Page function httpsGet(url: string): Promise { return new Promise((resolve, reject) => { - https.get(url, { - rejectUnauthorized: false // Ignore SSL certificate errors - }, (res) => { - if (res.statusCode === 200) { - resolve(); - } else { - reject(new Error(`Request failed with status code ${res.statusCode}`)); - } - }).on('error', (error) => { - reject(error); - }); - }); + https + .get( + url, + { + rejectUnauthorized: false // Ignore SSL certificate errors + }, + (res) => { + if (res.statusCode === 200) { + resolve() + } else { + reject(new Error(`Request failed with status code ${res.statusCode}`)) + } + } + ) + .on('error', (error) => { + reject(error) + }) + }) } -async function waitForServer(url: string, timeout: number = 150000) { - const start = Date.now(); +async function waitForServer(url: string, timeout = 150000) { + const start = Date.now() while (Date.now() - start < timeout) { try { - await httpsGet(url); - return true; + await httpsGet(url) + return true } catch (error) { // Ignore errors and try again - console.log (`Error fetching ${url}: ${error.message}`); + console.log(`Error fetching ${url}: ${error}`) } - await new Promise((resolve) => setTimeout(resolve, 1000)); + await new Promise((resolve) => setTimeout(resolve, 1000)) } - throw new Error(`Server at ${url} did not start within ${timeout} ms`); + throw new Error(`Server at ${url} did not start within ${timeout} ms`) } test.beforeAll(async ({ browser }) => { - console.log('Waiting for the server to start...'); - await new Promise((resolve) => setTimeout(resolve, 5000)); - const baseURL = 'https://localhost:3000'; - await waitForServer(baseURL); - page = await browser.newPage(); - test.setTimeout(150000); - await page.goto(baseURL); - await expect(page).toHaveTitle(/Дискурс/); - await page.getByRole('link', { name: 'Войти' }).click(); - console.log('Localhost server started successfully!'); - await page.close(); - }); + console.log('Waiting for the server to start...') + await new Promise((resolve) => setTimeout(resolve, 5000)) + const baseURL = 'https://localhost:3000' + await waitForServer(baseURL) + page = await browser.newPage() + test.setTimeout(150000) + await page.goto(baseURL) + await expect(page).toHaveTitle(/Дискурс/) + await page.getByRole('link', { name: 'Войти' }).click() + console.log('Localhost server started successfully!') + await page.close() +}) test.afterAll(async () => { - await page.close(); - }); - + await page.close() +}) /* TESTS section */ /* Random Generator */ function generateRandomString(length = 10) { - let result = ''; - const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - const charactersLength = characters.length; + let result = '' + const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' + const charactersLength = characters.length for (let i = 0; i < length; i++) { - result += characters.charAt(Math.floor(Math.random() * charactersLength)); + result += characters.charAt(Math.floor(Math.random() * charactersLength)) } - return result; + return result } test.beforeEach(async ({ page }) => { - await page.goto(`/`); + await page.goto('/') /* test.setTimeout(80000); */ - await page.getByRole('link', { name: 'Войти' }).click(); - await page.getByPlaceholder('Почта').click(); - await page.getByPlaceholder('Почта').fill('guests@discours.io'); - await page.getByPlaceholder('Пароль').click(); - await page.getByPlaceholder('Пароль').fill('Gue$tP@ss'); - await page.getByRole('button', { name: 'Войти' }).click(); -}); + await page.getByRole('link', { name: 'Войти' }).click() + await page.getByPlaceholder('Почта').click() + await page.getByPlaceholder('Почта').fill('guests@discours.io') + await page.getByPlaceholder('Пароль').click() + await page.getByPlaceholder('Пароль').fill('Gue$tP@ss') + await page.getByRole('button', { name: 'Войти' }).click() +}) test.describe('Topic Actions', () => { test('Follow topic', async ({ page }) => { - await page.getByRole('link', { name: 'темы', exact: true }).click(); - await page.getByRole('link', { name: 'Общество Статьи о политике, экономике и обществе, об актуальных событиях, людях, мнениях. Тексты про историю и современность, про то, что происходит в России и мире' }).click(); - await page.getByRole('button', { name: 'Подписаться на тему' }).click(); - await expect(page.getByRole('button', { name: 'Отписаться от темы' })).toBeVisible(); - }); + await page.getByRole('link', { name: 'темы', exact: true }).click() + await page + .getByRole('link', { + name: 'Общество Статьи о политике, экономике и обществе, об актуальных событиях, людях, мнениях. Тексты про историю и современность, про то, что происходит в России и мире' + }) + .click() + await page.getByRole('button', { name: 'Подписаться на тему' }).click() + await expect(page.getByRole('button', { name: 'Отписаться от темы' })).toBeVisible() + }) test('Unfollow topic', async ({ page }) => { - await page.getByRole('link', { name: 'темы', exact: true }).click(); - await page.getByRole('link', { name: 'Общество Статьи о политике, экономике и обществе, об актуальных событиях, людях, мнениях. Тексты про историю и современность, про то, что происходит в России и мире' }).click(); - await page.getByRole('button', { name: 'Отписаться от темы' }).click(); - await expect(page.getByRole('button', { name: 'Подписаться на тему' })).toBeVisible(); - }); + await page.getByRole('link', { name: 'темы', exact: true }).click() + await page + .getByRole('link', { + name: 'Общество Статьи о политике, экономике и обществе, об актуальных событиях, людях, мнениях. Тексты про историю и современность, про то, что происходит в России и мире' + }) + .click() + await page.getByRole('button', { name: 'Отписаться от темы' }).click() + await expect(page.getByRole('button', { name: 'Подписаться на тему' })).toBeVisible() + }) test('Add comment to topic', async ({ page }) => { - const randomString = generateRandomString(); - const currentDate = new Date(); - await page.getByRole('button', { name: 'Т.Р' }).click(); - await page.getByRole('link', { name: 'Профиль' }).click(); - await page.getByRole('link', { name: 'Тестируем функционал' }).first().click(); - await page.locator('.tiptap').click(); - await page.locator('.tiptap').fill('Проверка Комментариев: ' + randomString + ' ' + currentDate); - await page.getByRole('button', { name: 'Отправить' }).click(); - await expect(page.getByText('Проверка Комментариев: ' + randomString + ' ' + currentDate)).toBeVisible(); - }); + const randomString = generateRandomString() + const currentDate = new Date() + await page.getByRole('button', { name: 'Т.Р' }).click() + await page.getByRole('link', { name: 'Профиль' }).click() + await page.getByRole('link', { name: 'Тестируем функционал' }).first().click() + await page.locator('.tiptap').click() + await page.locator('.tiptap').fill(`Проверка Комментариев: ${randomString} ${currentDate}`) + await page.getByRole('button', { name: 'Отправить' }).click() + await expect(page.getByText(`Проверка Комментариев: ${randomString} ${currentDate}`)).toBeVisible() + }) test('Edit comment to topic', async ({ page }) => { - await page.getByRole('button', { name: 'Т.Р' }).click(); - await page.getByRole('link', { name: 'Комментарии' }).click(); - await page.locator('[id^="comment_"]').filter({ hasText: 'Проверка Комментариев' }).first().hover(); - await page.getByRole('button', { name: 'Редактировать', exact: true }).first().click(); - const randomString = generateRandomString(); - const currentDate = new Date(); - await page.locator('.tiptap').fill('Редактируемый Комментарий: ' + randomString + ' ' + currentDate); - await page.getByRole('button', { name: 'Сохранить' }).click(); - await expect(page.getByText('Редактируемый Комментарий: ' + randomString + ' ' + currentDate)).toBeVisible(); - }); -}); \ No newline at end of file + await page.getByRole('button', { name: 'Т.Р' }).click() + await page.getByRole('link', { name: 'Комментарии' }).click() + await page.locator('[id^="comment_"]').filter({ hasText: 'Проверка Комментариев' }).first().hover() + await page.getByRole('button', { name: 'Редактировать', exact: true }).first().click() + const randomString = generateRandomString() + const currentDate = new Date() + await page.locator('.tiptap').fill(`Редактируемый Комментарий: ${randomString} ${currentDate}`) + await page.getByRole('button', { name: 'Сохранить' }).click() + await expect(page.getByText(`Редактируемый Комментарий: ${randomString} ${currentDate}`)).toBeVisible() + }) +}) diff --git a/tests/auth-user-actions.spec.ts b/tests/auth-user-actions.spec.ts index cf2b157b..e743c140 100644 --- a/tests/auth-user-actions.spec.ts +++ b/tests/auth-user-actions.spec.ts @@ -1,111 +1,119 @@ -import { test, expect, type Page } from '@playwright/test'; -import https from 'https'; +// biome-ignore lint/correctness/noNodejsModules: +import https from 'node:https' +import { type Page, expect, test } from '@playwright/test' -let context: any; -let page: Page; +// biome-ignore lint/suspicious/noExplicitAny: +let context: any +let page: Page /* Global starting test config */ function httpsGet(url: string): Promise { return new Promise((resolve, reject) => { - https.get(url, { - rejectUnauthorized: false // Ignore SSL certificate errors - }, (res) => { - if (res.statusCode === 200) { - resolve(); - } else { - reject(new Error(`Request failed with status code ${res.statusCode}`)); - } - }).on('error', (error) => { - reject(error); - }); - }); + https + .get( + url, + { + rejectUnauthorized: false // Ignore SSL certificate errors + }, + (res) => { + if (res.statusCode === 200) { + resolve() + } else { + reject(new Error(`Request failed with status code ${res.statusCode}`)) + } + } + ) + .on('error', (error) => { + reject(error) + }) + }) } -async function waitForServer(url: string, timeout: number = 150000) { - const start = Date.now(); +async function waitForServer(url: string, timeout = 150000) { + const start = Date.now() while (Date.now() - start < timeout) { try { - await httpsGet(url); - return true; + await httpsGet(url) + return true } catch (error) { // Ignore errors and try again - console.log (`Error fetching ${url}: ${error.message}`); + console.log(`Error fetching ${url}: ${error}`) } - await new Promise((resolve) => setTimeout(resolve, 1000)); + await new Promise((resolve) => setTimeout(resolve, 1000)) } - throw new Error(`Server at ${url} did not start within ${timeout} ms`); + throw new Error(`Server at ${url} did not start within ${timeout} ms`) } test.beforeAll(async ({ browser }) => { - console.log('Waiting for the server to start...'); - await new Promise((resolve) => setTimeout(resolve, 5000)); - const baseURL = 'https://localhost:3000'; - await waitForServer(baseURL); - context = await browser.newContext(); - page = await context.newPage(); - test.setTimeout(150000); - await page.goto(baseURL); - await expect(page).toHaveTitle(/Дискурс/); - await page.getByRole('link', { name: 'Войти' }).click(); - console.log('Localhost server started successfully!'); - await page.close(); - }); + console.log('Waiting for the server to start...') + await new Promise((resolve) => setTimeout(resolve, 5000)) + const baseURL = 'https://localhost:3000' + await waitForServer(baseURL) + context = await browser.newContext() + page = await context.newPage() + test.setTimeout(150000) + await page.goto(baseURL) + await expect(page).toHaveTitle(/Дискурс/) + await page.getByRole('link', { name: 'Войти' }).click() + console.log('Localhost server started successfully!') + await page.close() +}) /* TESTS section */ /* Random Generator */ function generateRandomString(length = 10) { - let result = ''; - const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - const charactersLength = characters.length; + let result = '' + const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' + const charactersLength = characters.length for (let i = 0; i < length; i++) { - result += characters.charAt(Math.floor(Math.random() * charactersLength)); + result += characters.charAt(Math.floor(Math.random() * charactersLength)) } - return result; + return result } -test.beforeEach(async ({page}) => { - await page.goto(`/`); +test.beforeEach(async ({ page }) => { + await page.goto('/') /* test.setTimeout(80000); */ - await page.getByRole('link', { name: 'Войти' }).click(); - await page.getByPlaceholder('Почта').click(); - await page.getByPlaceholder('Почта').fill('guests@discours.io'); - await page.getByPlaceholder('Пароль').click(); - await page.getByPlaceholder('Пароль').fill('Gue$tP@ss'); - await page.getByRole('button', { name: 'Войти' }).click(); -}); + await page.getByRole('link', { name: 'Войти' }).click() + await page.getByPlaceholder('Почта').click() + await page.getByPlaceholder('Почта').fill('guests@discours.io') + await page.getByPlaceholder('Пароль').click() + await page.getByPlaceholder('Пароль').fill('Gue$tP@ss') + await page.getByRole('button', { name: 'Войти' }).click() +}) test.describe('User Actions', () => { - test('User sandwitch menu', async ({page}) => { - await page.getByRole('button', { name: 'Т.Р' }).click(); - await expect(page.getByRole('link', { name: 'Профиль' })).toBeVisible(); - await page.getByRole('button', { name: 'Т.Р' }).click(); - }); - test('Follow user', async ({page}) => { - await page.getByRole('link', { name: 'авторы', exact: true }).click(); - await page.getByRole('link', { name: 'Дискурс На сайте c 16 июня' }).click(); - await page.getByRole('button', { name: 'Подписаться' }).click(); - await expect(page.getByRole('main').getByRole('button', { name: 'Вы подписаны' })).toBeVisible(); - }); - test('Unfollow user', async ({page}) => { - await page.getByRole('link', { name: 'авторы', exact: true }).click(); - await page.getByRole('link', { name: 'Дискурс На сайте c 16 июня' }).click(); - await page.getByRole('button', { name: 'Вы подписаны' }).click(); - await expect(page.getByRole('main').getByRole('button', { name: 'Подписаться' })).toBeVisible(); - }); - test('Change user data', async ({page}) => { - await page.getByRole('button', { name: 'Т.Р' }).click(); - await page.getByRole('link', { name: 'Профиль' }).click(); - await page.getByRole('button', { name: 'Редактировать профиль' }).click(); - await page.locator('.tiptap').click(); - const randomString = generateRandomString(); - const currentDate = new Date(); - await page.locator('.tiptap').fill('test: ' + randomString + ' ' + currentDate); + test('User sandwitch menu', async ({ page }) => { + await page.getByRole('button', { name: 'Т.Р' }).click() + await expect(page.getByRole('link', { name: 'Профиль' })).toBeVisible() + await page.getByRole('button', { name: 'Т.Р' }).click() + }) + test('Follow user', async ({ page }) => { + await page.getByRole('link', { name: 'авторы', exact: true }).click() + await page.getByRole('link', { name: 'Дискурс На сайте c 16 июня' }).click() + await page.getByRole('button', { name: 'Подписаться' }).click() + await expect(page.getByRole('main').getByRole('button', { name: 'Вы подписаны' })).toBeVisible() + }) + test('Unfollow user', async ({ page }) => { + await page.getByRole('link', { name: 'авторы', exact: true }).click() + await page.getByRole('link', { name: 'Дискурс На сайте c 16 июня' }).click() + await page.getByRole('button', { name: 'Вы подписаны' }).click() + await expect(page.getByRole('main').getByRole('button', { name: 'Подписаться' })).toBeVisible() + }) + test('Change user data', async ({ page }) => { + await page.getByRole('button', { name: 'Т.Р' }).click() + await page.getByRole('link', { name: 'Профиль' }).click() + await page.getByRole('button', { name: 'Редактировать профиль' }).click() + await page.locator('.tiptap').click() + const randomString = generateRandomString() + const currentDate = new Date() + await page.locator('.tiptap').fill(`test: ${randomString} ${currentDate}`) try { - const button = await page.getByRole('button', { name: 'Сохранить настройки' }); - await button.click(); + const button = await page.getByRole('button', { name: 'Сохранить настройки' }) + await button.click() } catch (error) { - console.log('Button has disappeared'); + console.warn('Button has disappeared', error) } - await expect(page.getByText('test: ' + randomString + ' ' + currentDate)).toBeVisible(); - }); -}); \ No newline at end of file + await expect(page.getByText(`test: ${randomString} ${currentDate}`)).toBeVisible() + }) +}) diff --git a/tests/page-sections.spec.ts b/tests/page-sections.spec.ts index 7ee6aeb6..7401996b 100644 --- a/tests/page-sections.spec.ts +++ b/tests/page-sections.spec.ts @@ -1,71 +1,76 @@ -import { test, expect, type Page } from '@playwright/test'; -import https from 'https'; +// biome-ignore lint/correctness/noNodejsModules: +import https from 'node:https' +import { type Page, expect, test } from '@playwright/test' /* Global starting test config */ -let page: Page; +let page: Page function httpsGet(url: string): Promise { return new Promise((resolve, reject) => { - https.get(url, { - rejectUnauthorized: false // Ignore SSL certificate errors - }, (res) => { - if (res.statusCode === 200) { - resolve(); - } else { - reject(new Error(`Request failed with status code ${res.statusCode}`)); - } - }).on('error', (error) => { - reject(error); - }); - }); + https + .get( + url, + { + rejectUnauthorized: false // Ignore SSL certificate errors + }, + (res) => { + if (res.statusCode === 200) { + resolve() + } else { + reject(new Error(`Request failed with status code ${res.statusCode}`)) + } + } + ) + .on('error', (error) => { + reject(error) + }) + }) } -async function waitForServer(url: string, timeout: number = 150000) { - const start = Date.now(); +async function waitForServer(url: string, timeout = 150000) { + const start = Date.now() while (Date.now() - start < timeout) { try { - await httpsGet(url); - return true; + await httpsGet(url) + return true } catch (error) { // Ignore errors and try again - console.log (`Error fetching ${url}: ${error.message}`); + console.log(`Error fetching ${url}: ${error}`) } - await new Promise((resolve) => setTimeout(resolve, 1000)); + await new Promise((resolve) => setTimeout(resolve, 1000)) } - throw new Error(`Server at ${url} did not start within ${timeout} ms`); + throw new Error(`Server at ${url} did not start within ${timeout} ms`) } test.beforeAll(async ({ browser }) => { - console.log('Waiting for the server to start...'); - await new Promise((resolve) => setTimeout(resolve, 5000)); - const baseURL = 'https://localhost:3000'; - await waitForServer(baseURL); - page = await browser.newPage(); - test.setTimeout(150000); - await page.goto(baseURL); - await expect(page).toHaveTitle(/Дискурс/); - console.log('Localhost server started successfully!'); - }); + console.log('Waiting for the server to start...') + await new Promise((resolve) => setTimeout(resolve, 5000)) + const baseURL = 'https://localhost:3000' + await waitForServer(baseURL) + page = await browser.newPage() + test.setTimeout(150000) + await page.goto(baseURL) + await expect(page).toHaveTitle(/Дискурс/) + console.log('Localhost server started successfully!') +}) test.afterAll(async () => { - await page.close(); - }); + await page.close() +}) - /* TESTS section */ const pagesTitles = { '/': /Дискурс/, '/feed': /Лента/, - '/about/help': /Поддержите Дискурс/, - '/authors': /Авторы/, - '/topics': /Темы и сюжеты/, - '/inbox': /Входящие/, + '/guide/support': /Поддержите Дискурс/, + '/author': /Авторы/, + '/topic': /Темы и сюжеты/ } test.describe('Pages open', () => { Object.keys(pagesTitles).forEach((res: string) => { test(`Open Page ${res}`, async ({ page }) => { await page.goto(`${res}`) - const title = pagesTitles[res] + const title = pagesTitles[res as keyof typeof pagesTitles] || '' await expect(page).toHaveTitle(title) }) }) -}); \ No newline at end of file +})