diff --git a/site/build/prerender.ts b/site/build/prerender.ts index c3b5e89d12..077f10cf3c 100644 --- a/site/build/prerender.ts +++ b/site/build/prerender.ts @@ -51,6 +51,7 @@ export const pagesToPrerender: { sitePathFr.simulateurs['profession-libérale'].avocat, sitePathFr.simulateurs['profession-libérale']['chirurgien-dentiste'], sitePathFr.simulateurs['profession-libérale'].index, + sitePathFr.simulateurs['réduction-générale'], ].map((val) => encodeURI(val)), infrance: [ sitePathEn.index, diff --git a/site/cypress/integration/mon-entreprise/reduction-generale.ts b/site/cypress/integration/mon-entreprise/reduction-generale.ts new file mode 100755 index 0000000000..873e60d533 --- /dev/null +++ b/site/cypress/integration/mon-entreprise/reduction-generale.ts @@ -0,0 +1,110 @@ +import { checkA11Y, fr } from '../../support/utils' + +describe('Réduction générale', { testIsolation: false }, function () { + if (!fr) { + return + } + + const inputSelector = 'div[id="simulator-legend"] input[inputmode="numeric"]' + + before(function () { + return cy.visit('/simulateurs/réduction-générale') + }) + + it('should not crash', function () { + cy.contains('Salaire brut') + }) + + it('should allow to select a company size', function () { + cy.get('button').contains('SMIC').click() + + cy.contains('Plus de 50 salariés').click() + cy.contains('Modifier mes réponses').click() + cy.get('div[data-cy="modal"]') + .eq(0) + .contains('Effectif') + .next() + .contains('100') + cy.get('div[data-cy="modal"]').eq(0).contains('Fermer').click() + + cy.contains('Moins de 50 salariés').click() + cy.contains('Modifier mes réponses').click() + cy.get('div[data-cy="modal"]') + .eq(0) + .contains('Effectif') + .next() + .contains('10') + cy.get('div[data-cy="modal"]').eq(0).contains('Fermer').click() + }) + + it('should allow to change time period', function () { + cy.contains('Montant mensuel').click() + cy.get(inputSelector).first().type('{selectall}2000') + + cy.contains('Montant annuel').click() + cy.get(inputSelector).first().should('have.value', '24 000 €') + }) + + it('should have median salary and SMIC buttons', function () { + cy.contains('Montant mensuel').click() + cy.get('button').contains('SMIC') + cy.get('button').contains('salaire médian').click() + cy.get(inputSelector).first().should('have.value', '2 600 €') + }) + + it('should display values for the réduction générale', function () { + cy.contains('Montant mensuel').click() + cy.get(inputSelector).first().type('{selectall}1900') + + cy.get( + 'p[id="salarié___cotisations___exonérations___réduction_générale-value"]' + ).should('include.text', '494 €') + cy.get( + 'p[id="salarié___cotisations___exonérations___réduction_générale___part_retraite-value"]' + ).should('include.text', '93 €') + cy.get( + 'p[id="salarié___cotisations___exonérations___réduction_générale___part_Urssaf-value"]' + ).should('include.text', '401 €') + cy.get( + 'p[id="salarié___cotisations___exonérations___réduction_générale___part_Urssaf___part_chômage-value"]' + ).should('include.text', '63 €') + + cy.contains('Plus de 50 salariés').click() + cy.get( + 'p[id="salarié___cotisations___exonérations___réduction_générale-value"]' + ).should('include.text', '500 €') + cy.get( + 'p[id="salarié___cotisations___exonérations___réduction_générale___part_retraite-value"]' + ).should('include.text', '93 €') + cy.get( + 'p[id="salarié___cotisations___exonérations___réduction_générale___part_Urssaf-value"]' + ).should('include.text', '407 €') + cy.get( + 'p[id="salarié___cotisations___exonérations___réduction_générale___part_Urssaf___part_chômage-value"]' + ).should('include.text', '63 €') + }) + + it('should display a warning for a salary too high', function () { + cy.contains('Montant mensuel').click() + cy.get(inputSelector).first().type('{selectall}3000') + + cy.get('div[id="simulator-legend"]').should( + 'include.text', + 'La RGCP concerne uniquement les salaires inférieurs à 1,6 SMIC.' + ) + + cy.get( + 'p[id="salarié___cotisations___exonérations___réduction_générale___part_retraite-value"]' + ).should('include.text', '0 €') + cy.get( + 'p[id="salarié___cotisations___exonérations___réduction_générale___part_Urssaf-value"]' + ).should('include.text', '0 €') + cy.get( + 'p[id="salarié___cotisations___exonérations___réduction_générale___part_Urssaf___part_chômage-value"]' + ).should('include.text', '0 €') + }) + + it('should be RGAA compliant', function () { + checkA11Y() + }) +}) diff --git a/site/source/components/SimulateurWarning.tsx b/site/source/components/SimulateurWarning.tsx index 592a9c82d3..8f5a567311 100644 --- a/site/source/components/SimulateurWarning.tsx +++ b/site/source/components/SimulateurWarning.tsx @@ -151,6 +151,15 @@ export default function SimulateurWarning({
+