Skip to content

Commit

Permalink
Playwright (#930)
Browse files Browse the repository at this point in the history
* Oppsett

* Konvertert tester

* Fjerner testcafe
  • Loading branch information
MrFjellstad committed Oct 22, 2024
1 parent d51e170 commit 4bf7cae
Show file tree
Hide file tree
Showing 24 changed files with 944 additions and 3,637 deletions.
38 changes: 38 additions & 0 deletions .github/workflows/playwright.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Playwright Tests
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]

env:
APP: fritak-agp-frontend
IMAGE: ghcr.io/${{ github.repository }}/fritak-agp-frontend:${{ github.sha }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_AUTH_TOKEN: ${{ secrets.READER_TOKEN }}
NODE_AUTH_TOKEN: ${{ secrets.READER_TOKEN }}

jobs:
test:
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22.6'
cache: 'yarn'
registry-url: 'https://npm.pkg.github.com'
- name: Install dependencies
run: npm install -g yarn && yarn
- name: Install Playwright Browsers
run: yarn playwright install --with-deps
- name: Run Playwright tests
run: yarn playwright test
- uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 30
47 changes: 0 additions & 47 deletions .github/workflows/testcafe-workflow.yml

This file was deleted.

4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,7 @@ src/index.css
/server/node_modules
.vscode
.dccache
/test-results/
/playwright-report/
/blob-report/
/playwright/.cache/
File renamed without changes.
18 changes: 18 additions & 0 deletions e2e/example.spec.ts.eksempel
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { test, expect } from '@playwright/test';

test('has title', async ({ page }) => {
await page.goto('https://playwright.dev/');

// Expect a title "to contain" a substring.
await expect(page).toHaveTitle(/Playwright/);
});

test('get started link', async ({ page }) => {
await page.goto('https://playwright.dev/');

// Click the get started link.
await page.getByRole('link', { name: 'Get started' }).click();

// Expects page to have a heading with the name of Installation.
await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible();
});
186 changes: 186 additions & 0 deletions e2e/gravid-krav.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
// /e2e/gravid-krav.spec.js
import { test, expect } from '@playwright/test';

import gravidKravResponse from './gravidKravResponse';
import arbeidsgiverResponse from './arbeidsgiverResponse';

import clickButton from './helpers/clickSubmit';
import checkRadiobox from './helpers/checkRadiobox';

const arbeidsgiverAPI = /\/api\/v1\/arbeidsgivere/;
const navAuth = /\/person\/innloggingsstatus\/auth/;
const grunnBeloep = /\/api\/v1\/grunnbeloep/;
const innsendingAPI = /\/api\/v1\/gravid\/krav/;
const deko = /\/dekoratoren/;

const headereJson = {
'content-type': 'application/json; charset=UTF-8',
'access-control-allow-origin': 'http://localhost:3000',
'access-control-allow-credentials': 'true',
'strict-transport-security': 'max-age=15724800; includeSubDomains'
};

const headereText = { ...headereJson, 'content-type': 'text/html; charset=UTF-8' };
headereText['content-type'] = 'text/html; charset=UTF-8';

const grunnBeloepVerdier = {
dato: '2021-05-01',
grunnbeloep: 106399,
grunnbeloepPerMaaned: 8867,
gjennomsnittPerAar: 104716,
omregningsfaktor: 1.049807
};

test.describe('Gravid - Krav', () => {
test.beforeEach(async ({ page }) => {
await page.route(arbeidsgiverAPI, (route) =>
route.fulfill({ body: JSON.stringify(arbeidsgiverResponse), headers: headereJson })
);
await page.route(navAuth, (route) => route.fulfill({ body: 'null', headers: headereJson }));
await page.route(grunnBeloep, (route) =>
route.fulfill({ body: JSON.stringify(grunnBeloepVerdier), headers: headereJson })
);
await page.route(innsendingAPI, (route) =>
route.fulfill({ body: JSON.stringify(gravidKravResponse), status: 201, headers: headereJson })
);
await page.route(deko, (route) => route.fulfill({ body: '', status: 201, headers: headereJson }));

await page.clock.setFixedTime(new Date('2021-08-25T10:00:00'));

await page.goto('http://localhost:3000/fritak-agp/nb/gravid/krav?bedrift=810007842');
});

test('Klikk submit uten data, fjern feilmeldinger en etter en og send inn', async ({ page }) => {
await clickButton(page, 'Send krav');

expect(await page.locator('li > a').allInnerTexts()).toEqual(
expect.arrayContaining([
'Mangler fødselsnummer',
'Mangler antall arbeidsdager',
'Mangler fra dato',
'Mangler til dato',
'Mangler dager',
'Oppgi beløp med kun tall med maks to tall etter komma',
'Bekreft at opplysningene er korrekt'
])
);

await page.getByLabel('Jeg bekrefter at opplysningene jeg har gitt, er riktige og fullstendige.').check();
await expect(await page.locator('li > a').allInnerTexts()).toEqual(
expect.arrayContaining([
'Mangler fødselsnummer',
'Mangler antall arbeidsdager',
'Mangler fra dato',
'Mangler til dato',
'Mangler dager',
'Oppgi beløp med kun tall med maks to tall etter komma'
])
);
await expect(page.locator('.navds-error-summary__list')).not.toContainText('Bekreft at opplysningene er korrekt');

await page.getByLabel('Oppgi antall dager dere utbetaler lønn for i året:').fill('260');
await expect(await page.locator('li > a').allInnerTexts()).toEqual(
expect.arrayContaining([
'Mangler fødselsnummer',
'Mangler fra dato',
'Mangler til dato',
'Mangler dager',
'Oppgi beløp med kun tall med maks to tall etter komma'
])
);
await expect(page.locator('.navds-error-summary__list')).not.toContainText([
'Bekreft at opplysningene er korrekt',
'Mangler antall arbeidsdager'
]);

const fnr = page.getByLabel('Fødselsnummer (11 siffer)');

await fnr.fill('260');
await expect(await page.locator('li > a').allInnerTexts()).toEqual([
'Ugyldig fødselsnummer',
'Mangler fra dato',
'Mangler til dato',
'Mangler dager',
'Oppgi beløp med kun tall med maks to tall etter komma'
]);
await expect(page.locator('.navds-error-summary__list')).not.toContainText([
'Bekreft at opplysningene er korrekt',
'Mangler antall arbeidsdager'
]);

await fnr.fill('20125027610');
await expect(await page.locator('li > a').allInnerTexts()).toEqual([
'Mangler fra dato',
'Mangler til dato',
'Mangler dager',
'Oppgi beløp med kun tall med maks to tall etter komma'
]);
await expect(page.locator('.navds-error-summary__list')).not.toContainText([
'Ugyldig fødselsnummer',
'Bekreft at opplysningene er korrekt',
'Mangler antall arbeidsdager'
]);

const belop = page.locator('#belop-0');
await belop.fill('5000');
await expect(await page.locator('li > a').allInnerTexts()).toEqual([
'Mangler fra dato',
'Mangler til dato',
'Mangler dager'
]);
await expect(page.locator('.navds-error-summary__list')).not.toContainText([
'Oppgi beløp med kun tall med maks to tall etter komma',
'Ugyldig fødselsnummer',
'Bekreft at opplysningene er korrekt',
'Mangler antall arbeidsdager'
]);

const velgDager = page.locator('#dager-0');
await velgDager.selectOption({ label: '5' });
await expect(await page.locator('li > a').allInnerTexts()).toEqual(['Mangler fra dato', 'Mangler til dato']);
await expect(page.locator('.navds-error-summary__list')).not.toContainText([
'Mangler dager',
'Oppgi beløp med kun tall med maks to tall etter komma',
'Ugyldig fødselsnummer',
'Bekreft at opplysningene er korrekt',
'Mangler antall arbeidsdager'
]);

await page.getByLabel('Fra dato').fill('07.08.21');
await expect(page.locator('.navds-error-summary__list')).toContainText('Mangler til dato');
await expect(page.locator('.navds-error-summary__list')).not.toContainText([
'Mangler fra dato',
'Mangler dager',
'Oppgi beløp med kun tall med maks to tall etter komma',
'Ugyldig fødselsnummer',
'Bekreft at opplysningene er korrekt',
'Mangler antall arbeidsdager'
]);

await page.getByLabel('Til dato').fill('17.08.21');

await expect(page.locator('.navds-error-summary__list')).not.toContainText([
'Mangler til dato',
'Mangler fra dato',
'Mangler dager',
'Oppgi beløp med kun tall med maks to tall etter komma',
'Ugyldig fødselsnummer',
'Bekreft at opplysningene er korrekt',
'Mangler antall arbeidsdager'
]);

await fnr.fill('20125027610');
await clickButton(page, 'Send krav');
await expect(page.locator('html')).toContainText('Kravet er mottatt', { timeout: 10000 });
});

test('Legg til og fjern perioder', async ({ page }) => {
await clickButton(page, '+ Legg til en fraværsperiode');
await expect(page.locator('#belop-0')).toBeVisible();
await expect(page.locator('#belop-1')).toBeVisible();

await page.getByRole('button', { name: 'Slett' }).last().dispatchEvent('click');
await expect(page.locator('#belop-0')).toBeVisible();
await expect(page.locator('#belop-1')).not.toBeVisible({ timeout: 500 });
});
});
Loading

0 comments on commit 4bf7cae

Please sign in to comment.