adds tests
This commit is contained in:
@@ -2,11 +2,36 @@ import { test as setup } from '@playwright/test';
|
||||
|
||||
const authFile = 'playwright/.auth/user.json';
|
||||
|
||||
setup('authenticate', async ({ page }) => {
|
||||
setup('create user', async ({ page }) => {
|
||||
await page.goto('/login', { waitUntil: 'networkidle' });
|
||||
await page.locator('input[name="username"]').fill('Test');
|
||||
await page.locator('input[name="password"]').fill('password');
|
||||
const loginPromise = page.waitForResponse('**/api/v1/auth/login')
|
||||
await page.getByRole('button', { name: 'Login' }).click();
|
||||
const response = await loginPromise;
|
||||
|
||||
let responseJson;
|
||||
try {
|
||||
responseJson = await response.json();
|
||||
|
||||
} catch (e) {
|
||||
if (e instanceof Error && e.message.includes("No resource with given identifier found")) {
|
||||
console.log("Already logged in!")
|
||||
} else {
|
||||
throw e
|
||||
}
|
||||
}
|
||||
|
||||
if (responseJson?.message === "Failed to authenticate.") {
|
||||
await page.goto('/register', { waitUntil: 'networkidle' });
|
||||
await page.locator('input[name="username"]').fill('Test');
|
||||
await page.locator('input[name="email"]').fill('test@test.de');
|
||||
await page.locator('input[name="password"]').fill('password');
|
||||
await page.locator('#submit').click();
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Wait until the page receives the cookies.
|
||||
//
|
||||
// Sometimes login flow sets cookies in the process of several redirects.
|
||||
|
||||
9
web/tests/playwright/auth.teardown.ts
Normal file
9
web/tests/playwright/auth.teardown.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import { test as teardown } from '@playwright/test';
|
||||
|
||||
teardown('delete user', async ({ page }) => {
|
||||
await page.goto('/settings/account', { waitUntil: 'networkidle' });
|
||||
await page.locator("#delete-account").click();
|
||||
await page.locator("#confirm").click();
|
||||
|
||||
await page.waitForURL('/');
|
||||
});
|
||||
@@ -6,3 +6,10 @@ test('index page does not show error', async ({ page }) => {
|
||||
await indexPage.goto()
|
||||
await indexPage.hasNoError()
|
||||
});
|
||||
|
||||
test('location search works', async ({ page }) => {
|
||||
const indexPage = new IndexPage(page);
|
||||
await indexPage.goto()
|
||||
await indexPage.search()
|
||||
});
|
||||
|
||||
|
||||
@@ -13,6 +13,15 @@ export class IndexPage {
|
||||
await this.page.goto('/');
|
||||
}
|
||||
|
||||
async search() {
|
||||
await this.page.locator('input[name="q"]').fill('Munich');
|
||||
await this.page.waitForResponse('**/api/v1/search/multi');
|
||||
await this.page.locator('.menu-item').first().click();
|
||||
await this.page.waitForURL('/map?lat=48.13743&lon=11.57549');
|
||||
|
||||
}
|
||||
|
||||
|
||||
async hasNoError() {
|
||||
await expect(this.error).toHaveCount(0);
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ export class ListsPage {
|
||||
|
||||
constructor(page: Page) {
|
||||
this.page = page;
|
||||
this.createListButton = page.locator("#create-list-button");
|
||||
this.createListButton = page.locator("#create-list");
|
||||
this.listModal = page.locator("#list-modal");
|
||||
|
||||
this.listModalAvatar = this.listModal.locator('input[name="avatar"]')
|
||||
|
||||
Reference in New Issue
Block a user