diff --git a/docs/testcases.md b/docs/testcases.md index 6733955..31b7e48 100644 --- a/docs/testcases.md +++ b/docs/testcases.md @@ -1,8 +1,5 @@ # Testfälle(Testname) -## Api.spec.ts -### GET und Post request Personen und Benutzer anschließend über das FE löschen @long @short @stage - ## Klasse.spec.ts ### Eine Klasse als Landesadmin anlegen und die Klasse anschließend in der Ergebnisliste suchen und dann löschen @long @short @stage ### Ergebnisliste Klassen als Landesadmin auf Vollständigkeit prüfen @long @short @stage diff --git a/pages/admin/PersonDetailsView.page.ts b/pages/admin/PersonDetailsView.page.ts index 05ece5e..ea4e214 100644 --- a/pages/admin/PersonDetailsView.page.ts +++ b/pages/admin/PersonDetailsView.page.ts @@ -9,6 +9,9 @@ export class PersonDetailsViewPage{ readonly icon_pwVisible: Locator; readonly input_pw: Locator; readonly button_close_pwreset: Locator; + readonly button_deletePerson: Locator; + readonly button_deletePersonConfirm: Locator; + readonly button_closeDeletePersonConfirm: Locator; constructor(page){ this.page = page; @@ -19,5 +22,8 @@ export class PersonDetailsViewPage{ this.icon_pwVisible = page.getByTestId('show-password-icon'); this.input_pw = page.locator('[data-testid="password-output-field"] input'); this.button_close_pwreset = page.getByTestId('close-password-reset-dialog-button'); + this.button_deletePerson = page.getByTestId('open-person-delete-dialog-icon'); + this.button_deletePersonConfirm = page.getByTestId('person-delete-button'); + this.button_closeDeletePersonConfirm = page.getByTestId('close-person-delete-success-dialog-button'); } } \ No newline at end of file diff --git a/tests/Person.spec.ts b/tests/Person.spec.ts index 9e229db..4968ece 100644 --- a/tests/Person.spec.ts +++ b/tests/Person.spec.ts @@ -5,6 +5,7 @@ import { StartPage } from "../pages/StartView.page"; import { MenuPage } from "../pages/MenuBar.page"; import { PersonCreationViewPage } from "../pages/admin/PersonCreationView.page"; import { PersonManagementViewPage } from "../pages/admin/PersonManagementView.page"; +import { PersonDetailsViewPage } from "../pages/admin/PersonDetailsView.page"; import { HeaderPage } from "../pages/Header.page"; import { faker } from "@faker-js/faker/locale/de"; import { deletePersonen, getPersonId, createPersonWithUserContext } from "../base/api/testHelperPerson.page"; @@ -682,4 +683,30 @@ test.describe(`Testfälle für die Administration von Personen": Umgebung: ${pro await deleteRolle(page, userInfo.rolleId); }); }); + + test("Einen Benutzer über das FE löschen @long @short @stage", async ({page, }) => { + const PersonManagementView = new PersonManagementViewPage(page); + const PersonDetailsView = new PersonDetailsViewPage(page); + + const vorname = "TAuto-PW-V-" + faker.person.firstName(); + const nachname = "TAuto-PW-N-" + faker.person.lastName(); + const rolle = "TAuto-PW-R-" + faker.lorem.word({ length: { min: 8, max: 12 }}); + const berechtigung = 'SYSADMIN'; + const idSP = await getSPId(page, 'Schulportal-Administration'); + + await test.step(`Neuen Benutzer über die api anlegen`, async () => { + await createPersonWithUserContext(page, 'Land Schleswig-Holstein', berechtigung, vorname, nachname, idSP, rolle); + }) + + await test.step(`Benutzer wieder löschen über das FE`, async () => { + await page.goto(FRONTEND_URL + "admin/personen"); + await PersonManagementView.input_Suchfeld.fill(nachname); + await PersonManagementView.button_Suchen.click(); + await page.getByRole("cell", { name: nachname, exact: true }).click(); + await PersonDetailsView.button_deletePerson.click(); + await PersonDetailsView.button_deletePersonConfirm.click(); + await PersonDetailsView.button_closeDeletePersonConfirm.click(); + await expect(page.getByRole("cell", { name: nachname, exact: true })).toBeHidden(); + }); + }) }); \ No newline at end of file diff --git a/tests/api.spec.ts b/tests/api.spec.ts deleted file mode 100644 index 716f689..0000000 --- a/tests/api.spec.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { test, expect } from '@playwright/test'; -import { LoginPage } from '../pages/LoginView.page'; -import { LandingPage } from '../pages/LandingView.page'; -import { StartPage } from '../pages/StartView.page'; -import { faker } from "@faker-js/faker/locale/de"; -import { PersonManagementViewPage } from "../pages/admin/PersonManagementView.page"; -import { HeaderPage } from "../pages/Header.page"; - -const PW = process.env.PW; -const USER = process.env.USER; -const FRONTEND_URL = process.env.FRONTEND_URL || ''; - -test.describe(`Spike um die API anzusprechen: Umgebung: ${process.env.UMGEBUNG}: URL: ${process.env.FRONTEND_URL}:`, () => { - test.afterEach(async ({ page }) => { - await test.step(`Abmelden`, async () => { - const Header = new HeaderPage(page); - await Header.button_logout.click(); - }); - }); - - test('GET und Post request Personen und Benutzer anschließend über das FE löschen @long @short @stage', async ({ page}) => { - const Login = new LoginPage(page); - const Landing = new LandingPage(page); - const Start = new StartPage(page); - const PersonManagementView = new PersonManagementViewPage(page); - const Vorname = "TAuto-PW-V-" + faker.person.firstName(); - const Nachname = "TAuto-PW-N-" + faker.person.lastName(); - - await test.step(`Anmelden mit einem Landesadmin ${USER}`, async () => { - await page.goto(FRONTEND_URL); - await expect(Landing.text_Willkommen).toBeVisible(); - await Landing.button_Anmelden.click(); - await Login.login(USER, PW); - await expect(Start.text_h2_Ueberschrift).toBeVisible(); - }) - - await test.step(`GET Request personen, alle Benutzer lesen`, async () => { - const response = await page.request.get(FRONTEND_URL + 'api/personen/'); - expect(response.status()).toBe(200); - }) - - await test.step(`POST Request personen, neuen Benutzer anlegen`, async () => { - const response = await page.request.post(FRONTEND_URL + 'api/personen/', { - data: { - "name": { - "vorname": Vorname, - "familienname": Nachname - } - } - }) - expect(response.status()).toBe(201); - }) - - await test.step(`Benutzer wieder löschen`, async () => { - await page.goto(FRONTEND_URL + "admin/personen"); - await PersonManagementView.input_Suchfeld.fill(Nachname); - await PersonManagementView.button_Suchen.click(); - await page.getByRole("cell", { name: Nachname, exact: true }).click(); - await page.getByTestId("open-person-delete-dialog-icon").click(); - await page.getByTestId("person-delete-button").click(); - await page.getByTestId("close-person-delete-success-dialog-button").click(); - }); - }) -}) \ No newline at end of file