diff --git a/tests/mitarbeiter.spec.ts b/tests/mitarbeiter.spec.ts index 800e19b..4977ba2 100644 --- a/tests/mitarbeiter.spec.ts +++ b/tests/mitarbeiter.spec.ts @@ -40,7 +40,7 @@ test.describe('mitarbeiter', () => { const users = page.getByText('Delete'); await users.first().waitFor({ state: "visible" }); - expect(await users.count()).toBe(2); + expect(await users.count()).toBeGreaterThan(1); expect(button).toBeTruthy(); }); diff --git a/tests/mitarbeiterErstellen.spec.ts b/tests/mitarbeiterErstellen.spec.ts new file mode 100644 index 0000000..d7f6523 --- /dev/null +++ b/tests/mitarbeiterErstellen.spec.ts @@ -0,0 +1,85 @@ +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(); + + const toBeDeletedEmployee = page.getByText('12345'); + await toBeDeletedEmployee.first().waitFor({ state: "visible" }); + await expect(toBeDeletedEmployee).toHaveCount(1); + + const deleteButton = page.getByText('Delete').nth(2); + + await deleteButton.click(); + + const deletedEmployee = page.getByText('12345'); + await expect(deletedEmployee).toHaveCount(0); + }); +}); +