Skip to content

Commit 045e3a5

Browse files
authored
Merge pull request #1028 from navikt/feature/mellomlagring-tests
Use mellomlagring in Cypress tests
2 parents eb0936d + 361f55c commit 045e3a5

30 files changed

+728
-734
lines changed

mocks/mocks/collections.json

-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
"get-soknad:success-1",
1717
"delete-soknad:success",
1818
"put-utfylt-soknad:success",
19-
"post-send-inn:success",
2019
"send-inn-frontend:available",
2120
"get-prefill-data:success",
2221
"get-activities:success"

mocks/mocks/data/formio-api/custom-components.json

-1
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,6 @@
204204
"tableView": false,
205205
"modalEdit": false,
206206
"data": {
207-
"resource": "",
208207
"url": "http://127.0.0.1:3001/fyllut/api/common-codes/currencies?lang=nb"
209208
},
210209
"valueProperty": "",

mocks/mocks/routes/innsending-api.js

-26
Original file line numberDiff line numberDiff line change
@@ -56,32 +56,6 @@ module.exports = [
5656
},
5757
],
5858
},
59-
{
60-
id: 'post-send-inn',
61-
url: '/send-inn/fyllUt/v1/leggTilVedlegg',
62-
method: 'POST',
63-
variants: [
64-
{
65-
id: 'success',
66-
type: 'json',
67-
options: {
68-
status: 302,
69-
body: {},
70-
headers: {
71-
Location: 'http://localhost:3300/send-inn-frontend',
72-
},
73-
},
74-
},
75-
{
76-
id: 'failure',
77-
type: 'text',
78-
options: {
79-
status: 500,
80-
body: 'Internal Server Error',
81-
},
82-
},
83-
],
84-
},
8559
{
8660
id: 'post-soknad',
8761
url: '/send-inn/fyllUt/v1/soknad*',

packages/fyllut-backend/src/routers/api/common-codes.ts

+1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ const commonCodes = {
3535

3636
try {
3737
const response = await fetchCommonCodeDescriptions(req, 'ValutaBetaling', languageCode);
38+
3839
for (const [key, values] of Object.entries(response.betydninger)) {
3940
const currencyName = (values as any)[0]?.beskrivelser?.[languageCode]?.term;
4041
const newObj = { label: `${currencyName} (${key})`, value: key };

packages/fyllut/cypress/cypress.d.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { ByRoleOptions } from '@testing-library/cypress';
22
import { ByRoleMatcher } from '@testing-library/dom';
3+
import { CyHttpMessages } from 'cypress/types/net-stubbing';
34

45
declare global {
56
namespace Cypress {
@@ -26,9 +27,11 @@ declare global {
2627

2728
defaultInterceptsMellomlagring(): Chainable<JQuery<HTMLElement>>;
2829

29-
defaultInterceptsPrefillData(): Chainable<JQuery<HTMLElement>>;
30+
defaultInterceptsExternal(): Chainable<JQuery<HTMLElement>>;
3031

31-
defaultInterceptsActivities(): Chainable<JQuery<HTMLElement>>;
32+
defaultWaits(): Chainable<JQuery<HTMLElement>>;
33+
34+
submitMellomlagring(callback: (req: CyHttpMessages.IncomingHttpRequest) => void): Chainable<JQuery<HTMLElement>>;
3235

3336
shouldBeVisible(): Chainable<JQuery>;
3437

packages/fyllut/cypress/e2e/activities.cy.ts packages/fyllut/cypress/e2e/components/activities.cy.ts

+49-58
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
1-
import { TEXTS } from '@navikt/skjemadigitalisering-shared-domain';
1+
/*
2+
* Tests filling out a form with the activities component information and verifying that the information is displayed in the summary
3+
* Tests the rendering for different number of activities from backend and error from backend
4+
*/
5+
6+
import { SendInnAktivitet, TEXTS } from '@navikt/skjemadigitalisering-shared-domain';
27
import { expect } from 'chai';
3-
import activitiesJson from '../../../../mocks/mocks/data/innsending-api/activities/activities.json';
8+
import activitiesJson from '../../../../../mocks/mocks/data/innsending-api/activities/activities.json';
49

510
const defaultActivity = {
611
aktivitetId: 'ingenAktivitet',
@@ -10,10 +15,23 @@ const defaultActivity = {
1015
};
1116

1217
const activityText = 'Arbeidstrening: 06.12.2023 - 06.04.2024';
13-
const innsendingsId = 'fb47c474-66c1-46ba-8124-723447a79e8e';
1418
const prefillMaalgruppe = 'ARBSOKERE';
1519
const activityJson = activitiesJson[0];
1620

21+
const verifySubmissionValues = (maalgruppe: string, aktivitet: Partial<SendInnAktivitet>) => {
22+
cy.submitMellomlagring((req) => {
23+
const {
24+
submission: {
25+
data: { container },
26+
},
27+
} = req.body;
28+
expect(container.aktivitet.aktivitetId).to.equal(aktivitet.aktivitetId);
29+
expect(container.aktivitet.periode.fom).to.equal(aktivitet.periode.fom);
30+
expect(container.aktivitet.periode.tom).to.equal(aktivitet.periode.tom);
31+
expect(container.maalgruppe).to.equal(maalgruppe);
32+
});
33+
};
34+
1735
describe('Activities', () => {
1836
before(() => {
1937
cy.configMocksServer();
@@ -22,7 +40,7 @@ describe('Activities', () => {
2240
beforeEach(() => {
2341
cy.defaultIntercepts();
2442
cy.defaultInterceptsMellomlagring();
25-
cy.defaultInterceptsActivities();
43+
cy.defaultInterceptsExternal();
2644
cy.mocksRestoreRouteVariants();
2745
});
2846

@@ -34,8 +52,9 @@ describe('Activities', () => {
3452
it('should show radiogroup with activity from backend and default activity', () => {
3553
cy.mocksUseRouteVariant('get-soknad:success-activities-empty');
3654

37-
cy.visit(`/fyllut/testingactivities/aktiviteter?sub=digital&innsendingsId=${innsendingsId}`);
38-
cy.wait('@getTestFormActivities');
55+
cy.visit(`/fyllut/testingactivities?sub=digital`);
56+
cy.defaultWaits();
57+
cy.clickStart();
3958
cy.wait('@getActivities');
4059

4160
cy.findByRole('group', { name: 'Velg hvilken aktivitet du vil søke om stønad for' })
@@ -51,21 +70,11 @@ describe('Activities', () => {
5170
cy.mocksUseRouteVariant('get-soknad:success-activities-empty');
5271

5372
// Check the submission values
54-
cy.intercept('PUT', '/fyllut/api/send-inn/utfyltsoknad', (req) => {
55-
const {
56-
submission: {
57-
data: { container },
58-
},
59-
} = req.body;
60-
expect(container.aktivitet.aktivitetId).to.equal(activityJson.aktivitetId);
61-
expect(container.aktivitet.periode.fom).to.equal(activityJson.periode.fom);
62-
expect(container.aktivitet.periode.tom).to.equal(activityJson.periode.tom);
63-
expect(container.maalgruppe).to.equal(activityJson.maalgruppe);
64-
req.reply(201);
65-
}).as('submit');
66-
67-
cy.visit(`/fyllut/testingactivities/aktiviteter?sub=digital&innsendingsId=${innsendingsId}`);
68-
cy.wait('@getTestFormActivities');
73+
verifySubmissionValues(activityJson.maalgruppe, activityJson);
74+
75+
cy.visit(`/fyllut/testingactivities?sub=digital`);
76+
cy.defaultWaits();
77+
cy.clickStart();
6978
cy.wait('@getActivities');
7079

7180
// Select the activity from backend
@@ -82,7 +91,7 @@ describe('Activities', () => {
8291

8392
// Submit
8493
cy.clickSaveAndContinue();
85-
cy.wait('@submit');
94+
cy.wait('@submitMellomlagring');
8695
});
8796
});
8897

@@ -91,8 +100,9 @@ describe('Activities', () => {
91100
cy.mocksUseRouteVariant('get-soknad:success-activities-empty');
92101
cy.mocksUseRouteVariant('get-activities:success-empty');
93102

94-
cy.visit(`/fyllut/testingactivities/aktiviteter?sub=digital&innsendingsId=${innsendingsId}`);
95-
cy.wait('@getTestFormActivities');
103+
cy.visit(`/fyllut/testingactivities?sub=digital`);
104+
cy.defaultWaits();
105+
cy.clickStart();
96106
cy.wait('@getActivities');
97107

98108
cy.findByRole('group', { name: 'Velg hvilken aktivitet du vil søke om stønad for' })
@@ -109,21 +119,11 @@ describe('Activities', () => {
109119
cy.mocksUseRouteVariant('get-activities:success-empty');
110120

111121
// Check the submission values
112-
cy.intercept('PUT', '/fyllut/api/send-inn/utfyltsoknad', (req) => {
113-
const {
114-
submission: {
115-
data: { container },
116-
},
117-
} = req.body;
118-
expect(container.aktivitet.aktivitetId).to.equal(defaultActivity.aktivitetId);
119-
expect(container.aktivitet.periode.fom).to.equal('');
120-
expect(container.aktivitet.periode.tom).to.equal('');
121-
expect(container.maalgruppe).to.equal(prefillMaalgruppe);
122-
req.reply(201);
123-
}).as('submit');
124-
125-
cy.visit(`/fyllut/testingactivities/aktiviteter?sub=digital&innsendingsId=${innsendingsId}`);
126-
cy.wait('@getTestFormActivities');
122+
verifySubmissionValues(prefillMaalgruppe, defaultActivity);
123+
124+
cy.visit(`/fyllut/testingactivities?sub=digital`);
125+
cy.defaultWaits();
126+
cy.clickStart();
127127
cy.wait('@getActivities');
128128

129129
// Select the default activity
@@ -140,7 +140,7 @@ describe('Activities', () => {
140140

141141
// Submit
142142
cy.clickSaveAndContinue();
143-
cy.wait('@submit');
143+
cy.wait('@submitMellomlagring');
144144
});
145145

146146
it('should default to ANNET for maalgruppe', () => {
@@ -149,21 +149,11 @@ describe('Activities', () => {
149149
cy.mocksUseRouteVariant('get-prefill-data:success-empty');
150150

151151
// Check the submission values
152-
cy.intercept('PUT', '/fyllut/api/send-inn/utfyltsoknad', (req) => {
153-
const {
154-
submission: {
155-
data: { container },
156-
},
157-
} = req.body;
158-
expect(container.aktivitet.aktivitetId).to.equal(defaultActivity.aktivitetId);
159-
expect(container.aktivitet.periode.fom).to.equal('');
160-
expect(container.aktivitet.periode.tom).to.equal('');
161-
expect(container.maalgruppe).to.equal('ANNET');
162-
req.reply(201);
163-
}).as('submit');
164-
165-
cy.visit(`/fyllut/testingactivities/aktiviteter?sub=digital&innsendingsId=${innsendingsId}`);
166-
cy.wait('@getTestFormActivities');
152+
verifySubmissionValues('ANNET', defaultActivity);
153+
154+
cy.visit(`/fyllut/testingactivities?sub=digital`);
155+
cy.defaultWaits();
156+
cy.clickStart();
167157
cy.wait('@getActivities');
168158

169159
// Select the default activity
@@ -180,16 +170,17 @@ describe('Activities', () => {
180170

181171
// Submit
182172
cy.clickSaveAndContinue();
183-
cy.wait('@submit');
173+
cy.wait('@submitMellomlagring');
184174
});
185175
});
186176

187177
describe('error from backend', () => {
188178
it('should show checkbox with default activity and info alert', () => {
189179
cy.mocksUseRouteVariant('get-activities:failure');
190180

191-
cy.visit(`/fyllut/testingactivities/aktiviteter?sub=digital&innsendingsId=${innsendingsId}`);
192-
cy.wait('@getTestFormActivities');
181+
cy.visit(`/fyllut/testingactivities?sub=digital`);
182+
cy.defaultWaits();
183+
cy.clickStart();
193184
cy.wait('@getActivities');
194185

195186
cy.contains('Velg hvilken aktivitet du vil søke om stønad for');
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/*
2+
* Tests that the alert component (react) renders correctly
3+
* Also tests that exisiting alerts in older form definitions renders correctly
4+
*/
5+
6+
describe('Alert', () => {
7+
beforeEach(() => {
8+
cy.defaultIntercepts();
9+
cy.visit('/fyllut/testingalert/page1?sub=paper');
10+
cy.defaultWaits();
11+
});
12+
13+
// New alerts (using react)
14+
it('should show default info with content', () => {
15+
cy.get('.navds-alert').contains('New alert 1');
16+
});
17+
18+
it('should show success variant with content', () => {
19+
cy.get('.navds-alert--success').contains('New alert 2');
20+
});
21+
22+
it('should have marginBottom of var(--a-spacing-10) which is 2.5rem = 40px', () => {
23+
cy.contains('.formio-component-alertstripe', 'New alert 1').should('have.css', 'marginBottom', '40px');
24+
});
25+
26+
it('should have marginBottom of 0px as the last element in the group', () => {
27+
cy.contains('.formio-component-alertstripe', 'New alert 2').should('have.css', 'marginBottom', '0px');
28+
});
29+
30+
it('should not show any labels', () => {
31+
cy.get('.formio-form').should('not.have.descendants', 'label');
32+
});
33+
34+
it('should display html content - h1 and a link to nav.no', () => {
35+
cy.get('.formio-component-alertstripehtml').find('h1').should('have.text', 'Tittel');
36+
cy.get('.formio-component-alertstripehtml').find('a').should('have.attr', 'href', 'https://www.nav.no/');
37+
});
38+
39+
it('should display alert with norwegian alerttype (suksess instead of success)', () => {
40+
cy.get('.formio-component-alertstripenorwegian').find('.navds-alert--success').contains('Norwegian alertType');
41+
});
42+
43+
// Old alerts (components have input=true on component and label defined)
44+
it('should have marginBottom from input=true of var(--a-spacing-10) which is 2.5rem = 40px', () => {
45+
cy.contains('.formio-component-alertstripe', 'Old alert 1').should('have.css', 'marginBottom', '40px');
46+
});
47+
48+
it('should have marginBottom from input=true of var(--a-spacing-10) which is 2.5rem = 40px for last element in group', () => {
49+
cy.contains('.formio-component-alertstripe', 'Old alert 2').should('have.css', 'marginBottom', '40px');
50+
});
51+
});

packages/fyllut/cypress/e2e/components.cy.ts packages/fyllut/cypress/e2e/components/currency-and-account.cy.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1+
/*
2+
* Tests that "penger og konto" component works as expected
3+
*/
14
describe('Components', () => {
25
describe('Penger og konto', () => {
36
beforeEach(() => {
47
cy.defaultIntercepts();
5-
cy.intercept('GET', '/fyllut/api/forms/pengerogkonto').as('getPengerOgKontoForm');
68
cy.visit('/fyllut/pengerogkonto/skjema');
9+
cy.defaultWaits();
710
cy.wait('@getCurrencies');
8-
cy.wait('@getPengerOgKontoForm');
911
});
1012

1113
it('triggers errors', () => {

packages/fyllut/cypress/e2e/datagrid.cy.ts packages/fyllut/cypress/e2e/components/datagrid.cy.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
/*
2+
* Tests datagrid component
3+
*/
14
describe('Datagrid', () => {
25
before(() => {
36
cy.configMocksServer();
@@ -6,7 +9,7 @@ describe('Datagrid', () => {
69
beforeEach(() => {
710
cy.defaultIntercepts();
811
cy.defaultInterceptsMellomlagring();
9-
cy.intercept('GET', '/fyllut/api/forms/datagrid123').as('getForm');
12+
cy.mocksRestoreRouteVariants();
1013
});
1114

1215
after(() => {
@@ -16,7 +19,7 @@ describe('Datagrid', () => {
1619
describe('Optional fields in datagrid', () => {
1720
it('does not trigger validation error on optional fields in datagrid rows', () => {
1821
cy.visit('/fyllut/datagrid123?sub=digital');
19-
cy.wait('@getForm');
22+
cy.defaultWaits();
2023
cy.clickStart();
2124
cy.findByRole('button', { name: 'Legg til' }).click();
2225
cy.clickSaveAndContinue();
@@ -28,7 +31,7 @@ describe('Datagrid', () => {
2831

2932
it('does not display empty datagrid rows on summary page', () => {
3033
cy.visit('/fyllut/datagrid123?sub=digital');
31-
cy.wait('@getForm');
34+
cy.defaultWaits();
3235
cy.clickStart();
3336
cy.findByRole('button', { name: 'Legg til' }).click();
3437
cy.clickSaveAndContinue();

0 commit comments

Comments
 (0)