employeeService/tests/mitarbeiterErstellen.spec.ts
Jan Klattenhoff d6f68afd64
All checks were successful
Playwright Tests / test (pull_request) Successful in 2m20s
test: Update delete button wait conditions in tests
2025-01-17 14:25:07 +01:00

92 lines
3 KiB
TypeScript

import { test, expect } from "@playwright/test";
test.describe('mitarbeiter', () => {
test.beforeEach(async ({ page }) => {
await page.goto('http://localhost:4200');
await page.getByRole('button').click();
await page.waitForFunction(() => window.location.href.includes('keycloak'));
await page.getByLabel('Username or email').fill('user');
await page.getByLabel('Password').fill('test');
await page.click('#kc-login');
await page.goto('http://localhost:4200/mitarbeitererstellen');
});
test('pageShouldLoad', async ({ page }) => {
await expect(page.getByText('Save')).toHaveCount(1);
});
test('backButtonShouldGoBack', async ({ page }) => {
await page.getByText('Back').click();
expect(page.url().includes('erstellen')).toBeFalsy();
});
test('EveryFieldShouldValidateEmptiness', async ({ page }) => {
await page.getByText('Save').click();
const errors = page.getByText('This field is required');
await expect(errors).toHaveCount(6);
});
test('PhoneNumberShouldBeValidated', async ({ page }) => {
await page.getByLabel('Phone').fill("asd");
await page.getByText('Save').click();
const error = page.getByText('This field must be a valid phone number');
await expect(error).toHaveCount(1);
});
test('PostCodeShouldValidateTooShort', async ({ page }) => {
await page.getByLabel('Postcode').fill("1");
await page.getByText('Save').click();
const error = page.getByText('The value is too short');
await expect(error).toHaveCount(1);
});
test('PostCodeShouldValidateTooLong', async ({ page }) => {
await page.getByLabel('Postcode').fill("123456");
await page.getByText('Save').click();
const error = page.getByText('The value is too long');
await expect(error).toHaveCount(1);
});
test('CreationAndDeletion', async ({ page }) => {
await page.getByLabel('First Name').fill('a');
await page.getByLabel('Last Name').fill('a');
await page.getByLabel('Street').fill('a');
await page.getByLabel('Postcode').fill('12345');
await page.getByLabel('City').fill('a');
await page.getByLabel('Phone Number').fill('1234');
await page.getByText('Save').click();
expect(page.url().includes('erstellen')).toBeFalsy();
// Wait for all "Delete" buttons to be attached to the DOM
// await page.locator('text=Delete').waitFor({ state: 'attached', timeout: 10000 });
// Ensure there are at least 3 "Delete" buttons
const deleteButtons = page.locator('text=Delete');
const deleteButtonCount = await deleteButtons.count();
if (deleteButtonCount >= 3) {
// Wait for the third "Delete" button to be visible
const deleteButton = deleteButtons.nth(2);
await deleteButton.waitFor({ state: 'visible', timeout: 5000 });
await deleteButton.click();
} else {
throw new Error('Less than 3 "Delete" buttons found.');
}
const deletedEmployee = page.getByText('12345');
await expect(deletedEmployee).toHaveCount(0, { timeout: 10000 });
});
});