add tests and fix npm build
Some checks failed
CI/CD Pipeline / test (push) Failing after 9m22s
CI/CD Pipeline / deploy-staging (push) Has been skipped
CI/CD Pipeline / deploy-main (push) Has been skipped

This commit is contained in:
philipp 2024-03-03 20:47:26 +01:00
parent 5781937bee
commit 3927f18863
2 changed files with 64 additions and 2 deletions

View File

@ -107,6 +107,7 @@ interface ChoiceBoatEvent extends Event{
amount_seats: number,
owner: number,
default_destination: string,
boat_in_ottensheim: boolean,
}
};
}
@ -277,6 +278,7 @@ interface ChoiceEvent extends Event{
is_cox: boolean,
steers: boolean,
cox_on_boat: boolean,
is_racing: boolean,
}
};
}
@ -323,7 +325,7 @@ function initNewChoice(select: HTMLInputElement) {
},
callbackOnInit: function() {
this._currentState.items.forEach(function(obj){
if (boat_in_ottensheim) {
if (boat_in_ottensheim && obj.customProperties) {
if (obj.customProperties.is_racing) {
const coxSelect = <HTMLSelectElement>document.querySelector('#shipmaster-' + select.id + 'js');
var new_option = new Option(obj.label, obj.value);
@ -359,7 +361,7 @@ function initNewChoice(select: HTMLInputElement) {
const user_id = event.detail.value;
const name = event.detail.label;
if (boat_in_ottensheim) {
if (boat_in_ottensheim && event.detail.customProperties.is_racing) {
if (event.detail.customProperties.is_racing) {
const coxSelect = <HTMLSelectElement>document.querySelector('#shipmaster-' + select.id + 'js');
if (coxSelect){

View File

@ -0,0 +1,60 @@
import { test, expect } from '@playwright/test';
test('Cox can start and cancel trip', async ({ page }) => {
await page.goto('http://localhost:8000/auth');
await page.getByPlaceholder('Name').click();
await page.getByPlaceholder('Name').fill('cox2');
await page.getByPlaceholder('Name').press('Tab');
await page.getByPlaceholder('Passwort').fill('cox');
await page.getByPlaceholder('Passwort').press('Enter');
await page.goto('http://localhost:8000/');
await page.getByRole('link', { name: 'Ausfahrt eintragen' }).click();
await page.getByText('Joe', { exact: true }).click();
await page.getByPlaceholder('Ruderer auswählen').click();
await page.getByRole('option', { name: 'rower2' }).click();
await page.getByRole('option', { name: 'cox2' }).click();
await expect(page.getByRole('listbox')).toContainText('Nur 2 Ruderer können hinzugefügt werden');
await expect(page.locator('#shipmaster-newrowerjs')).toContainText('cox');
await expect(page.locator('#steering_person-newrowerjs')).toContainText('rower2 cox');
await page.getByRole('button', { name: 'Ausfahrt eintragen' }).click();
await expect(page.locator('body')).toContainText('Ausfahrt erfolgreich hinzugefügt');
await expect(page.locator('body')).toContainText('Joe');
await page.getByRole('link', { name: 'Joe' }).click();
page.once('dialog', dialog => {
console.log(`Dialog message: ${dialog.message()}`);
dialog.dismiss().catch(() => {});
});
await page.getByRole('link', { name: 'Löschen' }).click();
});
test('Cox can start and finish trip', async ({ page }) => {
await page.goto('http://localhost:8000/auth');
await page.getByPlaceholder('Name').click();
await page.getByPlaceholder('Name').fill('cox2');
await page.getByPlaceholder('Name').press('Tab');
await page.getByPlaceholder('Passwort').fill('cox');
await page.getByPlaceholder('Passwort').press('Enter');
await page.goto('http://localhost:8000/');
await page.getByRole('link', { name: 'Ausfahrt eintragen' }).click();
await page.getByText('Joe', { exact: true }).click();
await page.getByPlaceholder('Ruderer auswählen').click();
await page.getByRole('option', { name: 'rower2' }).click();
await page.getByRole('option', { name: 'cox2' }).click();
await expect(page.getByRole('listbox')).toContainText('Nur 2 Ruderer können hinzugefügt werden');
await expect(page.locator('#shipmaster-newrowerjs')).toContainText('cox');
await expect(page.locator('#steering_person-newrowerjs')).toContainText('rower2 cox');
await page.getByRole('button', { name: 'Ausfahrt eintragen' }).click();
await expect(page.locator('body')).toContainText('Ausfahrt erfolgreich hinzugefügt');
await expect(page.locator('body')).toContainText('Joe');
await page.goto('http://localhost:8000/log');
await page.locator('div:nth-child(2) > .border-0').click();
await page.getByRole('combobox', { name: 'Destination' }).click();
await page.getByRole('combobox', { name: 'Destination' }).fill('Ottensheim');
await page.waitForTimeout(60000);
await page.getByRole('button', { name: 'Ausfahrt beenden' }).click();
await expect(page.locator('body')).toContainText('Ausfahrt korrekt eingetragen');
});