From 268ffff142d4258beed44f3c5f1d4435209c70dd Mon Sep 17 00:00:00 2001 From: Alan Le Ruyet Date: Tue, 21 Nov 2023 12:16:41 +0100 Subject: [PATCH] feat: LBAC-1704 tests end to end sur la recette (#825) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: suppression inutilisé * feat: gitignore here * feat: gitignore * feat: env passé par yarn params * feat: ajout dans la ci recette * feat: tests ok * feat: test pas encore ok * feat: cleaning * feat: essai workflow preview * feat: syntax * feat: correct e2e action * feat: test prdv ok * Update .github/workflows/cypress.yml Co-authored-by: Moroine Bentefrit * feat: ajustements * Update .github/workflows/cypress.yml Co-authored-by: Moroine Bentefrit * fix: irrelevant here * feat: suppression vieux poc et mise en commentaire temp --------- Co-authored-by: Moroine Bentefrit --- .github/workflows/cypress.yml | 67 ++++++++++++++++ .github/workflows/deploy_preview.yml | 12 +++ .github/workflows/end-to-end-testing.yml | 15 ---- .github/workflows/release.yml | 9 +++ .gitignore | 2 + cypress.config.ts | 3 - cypress/.gitignore | 2 + .../e2e/ui/send-job-application-mjsbal.cy.js | 37 --------- .../ui/send-job-application-modified.cy.js | 45 ----------- cypress/e2e/ui/send-job-application.cy.js | 76 ++++++++++--------- .../ui/send-rdv-from-widget-modified.cy.js | 46 ----------- cypress/e2e/ui/send-rdv-from-widget.cy.js | 67 ++++++++++------ ...end-spontaneous-application-modified.cy.js | 45 ----------- .../e2e/ui/send-spontaneous-application.cy.js | 69 ++++++++++------- package.json | 5 +- ui/components/RDV/DemandeDeContact.tsx | 31 ++------ 16 files changed, 229 insertions(+), 302 deletions(-) create mode 100644 .github/workflows/cypress.yml delete mode 100644 .github/workflows/end-to-end-testing.yml create mode 100644 cypress/.gitignore delete mode 100644 cypress/e2e/ui/send-job-application-mjsbal.cy.js delete mode 100644 cypress/e2e/ui/send-job-application-modified.cy.js delete mode 100644 cypress/e2e/ui/send-rdv-from-widget-modified.cy.js delete mode 100644 cypress/e2e/ui/send-spontaneous-application-modified.cy.js diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml new file mode 100644 index 0000000000..5679c15a04 --- /dev/null +++ b/.github/workflows/cypress.yml @@ -0,0 +1,67 @@ +name: CI + +on: + workflow_dispatch: + inputs: + cypress_host: + description: host name + type: string + required: true + secrets: + CODECOV_TOKEN: + description: Code coverrage token + required: true + SLACK_WEBHOOK: + description: Webhook slack + required: true + workflow_call: + inputs: + cypress_host: + description: host name + type: string + required: true + secrets: + CODECOV_TOKEN: + description: Code coverrage token + required: true + SLACK_WEBHOOK: + description: Webhook slack + required: true +jobs: + concurrency: + group: "cypress-${{ github.workflow }}-${{ github.ref }}" + runs-on: ubuntu-latest + steps: + - name: Checkout project + uses: actions/checkout@v4 + + - uses: actions/setup-node@v3 + with: + node-version: 20 + + - uses: actions/cache@v3 + with: + path: | + **/node_modules + .yarn/install-state.gz + .yarn/cache + key: yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: yarn- + + - name: Install dependencies + run: yarn install + + - name: Run cypress e2e tests + run: yarn e2e:headless --env ui=${{inputs.cypress_host}},server=${{inputs.cypress_host}} + + - name: Notify failure on Slack + uses: ravsamhq/notify-slack-action@v2 + if: ${{ failure() }} && ${{ inputs.environment }} == 'recette' + with: + status: ${{ job.status }} + notification_title: "Les tests e2e ne sont pas passés : ${{ inputs.app_version }} en ${{ inputs.environment }}" + message_format: "{emoji} *[${{ inputs.environment }}]* *{workflow}* {status_message} in <{repo_url}|{branch}> on <{commit_url}|{commit_sha}>. You can get error logs using `.bin/mna-lba deploy:log:decrypt ${{ github.run_id }}`" + notify_when: "failure" + mention_groups: "!channel" + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} diff --git a/.github/workflows/deploy_preview.yml b/.github/workflows/deploy_preview.yml index 865bc9cff5..3988c1fa0d 100644 --- a/.github/workflows/deploy_preview.yml +++ b/.github/workflows/deploy_preview.yml @@ -152,3 +152,15 @@ jobs: comment_tag: deployment mode: recreate pr_number: ${{ github.event.issue.number }} + + # cypress: + # concurrency: + # group: ${{ github.workflow }}-${{ github.event.issue.id }}-cypress + # cancel-in-progress: true + # needs: ["deploy_preview"] + # uses: "./.github/workflows/cypress.yml" + # inputs: + # cypress_host: "https://${{ github.event.issue.number }}.labonnealternance-preview.apprentissage.beta.gouv.fr" + # secrets: + # CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + # SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} diff --git a/.github/workflows/end-to-end-testing.yml b/.github/workflows/end-to-end-testing.yml deleted file mode 100644 index 64b3243c47..0000000000 --- a/.github/workflows/end-to-end-testing.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: End-to-end tests -on: - pull_request: - branches: - - main - -jobs: - cypress-run: - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v3 -# - name: Cypress run -# uses: cypress-io/github-action@v5 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8cce2b8fee..4459ba6849 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -80,3 +80,12 @@ jobs: DEPLOY_PASS: ${{ secrets.DEPLOY_PASS }} SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} VAULT_PWD: ${{ secrets.VAULT_PWD }} + + # cypress: + # needs: ["deploy"] + # uses: "./.github/workflows/cypress.yml" + # inputs: + # cypress_host: "https://labonnealternance-recette.apprentissage.beta.gouv.fr" + # secrets: + # CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + # SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} diff --git a/.gitignore b/.gitignore index 4c86f2311a..ee2c44f1ea 100644 --- a/.gitignore +++ b/.gitignore @@ -166,3 +166,5 @@ SEED_PASSPHRASE.txt seed.gz cypress.env.json + +assets/* diff --git a/cypress.config.ts b/cypress.config.ts index f24cfe394e..e260c9702f 100644 --- a/cypress.config.ts +++ b/cypress.config.ts @@ -6,9 +6,6 @@ dotenv.config() export default defineConfig({ viewportHeight: 768, viewportWidth: 1366, - env: { - host: process.env.CYPRESS_HOST, - }, e2e: { video: false, }, diff --git a/cypress/.gitignore b/cypress/.gitignore new file mode 100644 index 0000000000..5524d08678 --- /dev/null +++ b/cypress/.gitignore @@ -0,0 +1,2 @@ +/screenshots/* +/videos/* diff --git a/cypress/e2e/ui/send-job-application-mjsbal.cy.js b/cypress/e2e/ui/send-job-application-mjsbal.cy.js deleted file mode 100644 index 2dd7befef9..0000000000 --- a/cypress/e2e/ui/send-job-application-mjsbal.cy.js +++ /dev/null @@ -1,37 +0,0 @@ -describe("send-job-application", () => { - it("tests send-job-application", () => { - cy.viewport(1254, 704) - cy.visit("https://labonnealternance-recette.apprentissage.beta.gouv.fr/") - cy.get("form > div > div.css-0 input").click() - cy.get("form > div > div.css-0 input").type("ress") - cy.get("#lang-switcher-item-0").click() - cy.get("div.css-1kw2fa0 div.containerIdentity").click() - cy.get("div.css-1kw2fa0 input").click() - cy.get("div.css-1kw2fa0 input").type("pari") - cy.get("#lang-switcher-item-0 > strong").click() - cy.get("div.css-6st093 div:nth-of-type(3) select").click() - cy.get("div.css-6st093 div:nth-of-type(3) select").type("60") - cy.get("div.css-uos98o img").click() - cy.get("div.css-gmd149 button:nth-of-type(2)").click() - cy.get("#matcha648adcb8258b0842bb1afcc1 > div").click() - cy.get("[data-testid='CandidatureSpontanee'] button").click() - cy.get("[data-testid='lastName']").click() - cy.get("[data-testid='lastName']").type("Doe") - cy.get("[data-testid='firstName']").click() - cy.get("[data-testid='firstName']").type("John") - cy.get("[data-testid='email']").click() - cy.get("[data-testid='email']").type("test-auto@nexistepas.fr") - cy.get("[data-testid='phone']").click() - cy.get("[data-testid='phone']").type("0700000000") - cy.get("[data-testid='message']").click() - cy.get("[data-testid='message']").rightclick() - cy.get("[data-testid='message']").type( - "Madame, Monsieur,\nEtant actuellement à la recherche d’un emploi, je me permets de vous proposer ma candidature au poste de (emploi).\n\nEn effet, mon profil correspond à la description recherchée sur l’offre d’emploi (préciser où l’annonce a été vue). (Si le candidat possède peu d’expérience professionnelle) Ma formation en (préciser la formation) m'a permis d'acquérir de nombreuses compétences parmi celles que vous recherchez. Je possède tous les atouts qui me permettront de réussir dans le rôle que vous voudrez bien me confier. Motivation, rigueur et écoute sont les maîtres mots de mon comportement professionnel.(Si le candidat possède une expérience significative dans le poste à pourvoir). Mon expérience en tant que (emploi) m’a permis d’acquérir toutes les connaissances nécessaires à la bonne exécution des tâches du poste à pourvoir. Régulièrement confronté aux aléas du métier, je suis capable de répondre aux imprévus en toute autonomie. Intégrer votre entreprise représente pour moi un réel enjeu d’avenir dans lequel mon travail et mon honnêteté pourront s’exprimer pleinement.\n\nRestant à votre disposition pour toute information complémentaire, je suis disponible pour vous rencontrer lors d’un entretien à votre convenance\n\nVeuillez agréer, Madame, Monsieur, l’expression de mes sincères salutations." - ) - cy.get("p.css-1egmowt").click() - cy.get("[data-testid='fileDropzone']").type("C:\\fakepath\\CV - John Doe.pdf") - cy.get("[data-testid='candidature-not-sent']").click() - cy.get("p.css-x9fc5p").click() - }) -}) -//# recorderSourceMap=BCBDBEBFBGBHBIBJBKBLBMBNBOAOBPBQAQAQBRARBSBTBUBVBWBXBYBZBaBbBcBdBeBfAfB diff --git a/cypress/e2e/ui/send-job-application-modified.cy.js b/cypress/e2e/ui/send-job-application-modified.cy.js deleted file mode 100644 index d8066cd3f6..0000000000 --- a/cypress/e2e/ui/send-job-application-modified.cy.js +++ /dev/null @@ -1,45 +0,0 @@ -describe("send-job-application", () => { - it("tests send-job-application on " + Cypress.env("host"), () => { - cy.on("uncaught:exception", () => { - return false - }) - - cy.intercept("GET", Cypress.env("host") + "/api/v1/jobs?*").as("submitJobCall") - cy.intercept("POST", Cypress.env("host") + "/api/application").as("submitApplication") - - cy.generateRandomEmail("test-auto-", "@nexistepas.fr", 10).then((randomEmail) => { - cy.viewport(1254, 704) - cy.visit(Cypress.env("host") + "?displayMap=false") - cy.get("#headerFormJobField-input").click() - cy.get("#headerFormJobField-input").type("ress") - cy.get("#headerFormJobField-item-0").click() - cy.get("#headerFormJobField-input").should("have.value", "Ressources humaines") - cy.get("#headerFormPlaceField-input").click() - cy.get("#headerFormPlaceField-input").type("pari") - cy.get("#headerFormPlaceField-item-0").click() - cy.get("[data-testid='widget-form'] select[data-testid='locationRadius']").select("60") - cy.get("[data-testid='widget-form'] button").click() - - cy.wait("@submitJobCall").then(() => { - cy.get(".resultCard.matcha").first().click() - cy.get("[data-testid='CandidatureSpontanee'] button").click() - cy.get("[data-testid='lastName']").click() - cy.get("[data-testid='lastName']").type("Doe") - cy.get("[data-testid='firstName']").click() - cy.get("[data-testid='firstName']").type("John") - cy.get("[data-testid='email']").click() - cy.get("[data-testid='email']").type(randomEmail) - cy.get("[data-testid='phone']").click() - cy.get("[data-testid='phone']").type("0700000000") - cy.get("[data-testid='message']").click() - cy.get("[data-testid='message']").type("Madame, Monsieur,\nEtant actuellement à la recherche d’un emploi, ...") - cy.get("[data-testid='fileDropzone']").selectFile("cypress/fixtures/CV - John Doe.docx", { action: "drag-drop" }) - cy.get("[data-testid='candidature-not-sent']").click() - - cy.wait("@submitApplication").then(() => { - cy.get("[data-testid='CandidatureSpontaneeWorked']") - }) - }) - }) - }) -}) diff --git a/cypress/e2e/ui/send-job-application.cy.js b/cypress/e2e/ui/send-job-application.cy.js index 2dd7befef9..9a40fd3f93 100644 --- a/cypress/e2e/ui/send-job-application.cy.js +++ b/cypress/e2e/ui/send-job-application.cy.js @@ -1,37 +1,45 @@ describe("send-job-application", () => { - it("tests send-job-application", () => { - cy.viewport(1254, 704) - cy.visit("https://labonnealternance-recette.apprentissage.beta.gouv.fr/") - cy.get("form > div > div.css-0 input").click() - cy.get("form > div > div.css-0 input").type("ress") - cy.get("#lang-switcher-item-0").click() - cy.get("div.css-1kw2fa0 div.containerIdentity").click() - cy.get("div.css-1kw2fa0 input").click() - cy.get("div.css-1kw2fa0 input").type("pari") - cy.get("#lang-switcher-item-0 > strong").click() - cy.get("div.css-6st093 div:nth-of-type(3) select").click() - cy.get("div.css-6st093 div:nth-of-type(3) select").type("60") - cy.get("div.css-uos98o img").click() - cy.get("div.css-gmd149 button:nth-of-type(2)").click() - cy.get("#matcha648adcb8258b0842bb1afcc1 > div").click() - cy.get("[data-testid='CandidatureSpontanee'] button").click() - cy.get("[data-testid='lastName']").click() - cy.get("[data-testid='lastName']").type("Doe") - cy.get("[data-testid='firstName']").click() - cy.get("[data-testid='firstName']").type("John") - cy.get("[data-testid='email']").click() - cy.get("[data-testid='email']").type("test-auto@nexistepas.fr") - cy.get("[data-testid='phone']").click() - cy.get("[data-testid='phone']").type("0700000000") - cy.get("[data-testid='message']").click() - cy.get("[data-testid='message']").rightclick() - cy.get("[data-testid='message']").type( - "Madame, Monsieur,\nEtant actuellement à la recherche d’un emploi, je me permets de vous proposer ma candidature au poste de (emploi).\n\nEn effet, mon profil correspond à la description recherchée sur l’offre d’emploi (préciser où l’annonce a été vue). (Si le candidat possède peu d’expérience professionnelle) Ma formation en (préciser la formation) m'a permis d'acquérir de nombreuses compétences parmi celles que vous recherchez. Je possède tous les atouts qui me permettront de réussir dans le rôle que vous voudrez bien me confier. Motivation, rigueur et écoute sont les maîtres mots de mon comportement professionnel.(Si le candidat possède une expérience significative dans le poste à pourvoir). Mon expérience en tant que (emploi) m’a permis d’acquérir toutes les connaissances nécessaires à la bonne exécution des tâches du poste à pourvoir. Régulièrement confronté aux aléas du métier, je suis capable de répondre aux imprévus en toute autonomie. Intégrer votre entreprise représente pour moi un réel enjeu d’avenir dans lequel mon travail et mon honnêteté pourront s’exprimer pleinement.\n\nRestant à votre disposition pour toute information complémentaire, je suis disponible pour vous rencontrer lors d’un entretien à votre convenance\n\nVeuillez agréer, Madame, Monsieur, l’expression de mes sincères salutations." - ) - cy.get("p.css-1egmowt").click() - cy.get("[data-testid='fileDropzone']").type("C:\\fakepath\\CV - John Doe.pdf") - cy.get("[data-testid='candidature-not-sent']").click() - cy.get("p.css-x9fc5p").click() + it("tests send-job-application on " + Cypress.env("ui") + " --- " + Cypress.env("server"), () => { + cy.on("uncaught:exception", () => { + return false + }) + + cy.intercept("GET", Cypress.env("server") + "/api/v1/jobs?*").as("submitJobCall") + cy.intercept("POST", Cypress.env("server") + "/api/v1/application").as("submitApplication") + + cy.generateRandomEmail("test-auto-", "@nexistepas.fr", 10).then((randomEmail) => { + cy.viewport(1254, 704) + cy.visit(Cypress.env("ui") + "?displayMap=false") + cy.get("#headerFormJobField-input").click() + cy.get("#headerFormJobField-input").type("gestion inf") + cy.get("#headerFormJobField-item-0").click() + cy.get("#headerFormJobField-input").should("have.value", "Gestion de projets informatiques") + cy.get("#headerFormPlaceField-input").click() + cy.get("#headerFormPlaceField-input").type("lill") + cy.get("#headerFormPlaceField-item-0").click() + cy.get("[data-testid='widget-form'] select[data-testid='locationRadius']").select("60") + cy.get("[data-testid='widget-form'] button").click() + + cy.wait("@submitJobCall").then(() => { + cy.get(".resultCard.matcha").first().click() + cy.get("[data-testid='CandidatureSpontanee'] button").click() + cy.get("[data-testid='lastName']").click() + cy.get("[data-testid='lastName']").type("Doe") + cy.get("[data-testid='firstName']").click() + cy.get("[data-testid='firstName']").type("John") + cy.get("[data-testid='email']").click() + cy.get("[data-testid='email']").type(randomEmail) + cy.get("[data-testid='phone']").click() + cy.get("[data-testid='phone']").type("0700000000") + cy.get("[data-testid='message']").click() + cy.get("[data-testid='message']").type("Madame, Monsieur,\nEtant actuellement à la recherche d’un emploi, ...") + cy.get("[data-testid='fileDropzone']").selectFile("cypress/fixtures/CV - John Doe.docx", { action: "drag-drop" }) + cy.get("[data-testid='candidature-not-sent']").click() + + cy.wait("@submitApplication").then(() => { + cy.get("[data-testid='CandidatureSpontaneeWorked']") + }) + }) + }) }) }) -//# recorderSourceMap=BCBDBEBFBGBHBIBJBKBLBMBNBOAOBPBQAQAQBRARBSBTBUBVBWBXBYBZBaBbBcBdBeBfAfB diff --git a/cypress/e2e/ui/send-rdv-from-widget-modified.cy.js b/cypress/e2e/ui/send-rdv-from-widget-modified.cy.js deleted file mode 100644 index 46ad73660d..0000000000 --- a/cypress/e2e/ui/send-rdv-from-widget-modified.cy.js +++ /dev/null @@ -1,46 +0,0 @@ -describe("send-rdv-from-widget", () => { - it("tests send-rdv-from-widget on " + Cypress.env("host"), () => { - cy.intercept("GET", Cypress.env("host") + "/api/v1/formations?*").as("submitTrainingCall") - cy.intercept("POST", Cypress.env("host") + "/api/appointment-request/validate").as("submitRdv") - - cy.generateRandomEmail("test-auto-", "@nexistepas.fr", 10).then((randomEmail) => { - cy.viewport(1254, 704) - cy.visit(Cypress.env("host") + "/recherche-apprentissage-formation?displayMap=false") - cy.get("#headerFormJobField-input").click() - cy.get("#headerFormJobField-input").type("esth") - cy.get("#headerFormJobField-item-0").click() - cy.get("#headerFormJobField-input").should("have.value", "Esthétique") - cy.get("[data-testid='widget-form'] button").click() - - cy.wait("@submitTrainingCall").then(() => { - cy.get(".resultCard.training").first().click() - // eslint-disable-next-line cypress/unsafe-to-chain-command - cy.get("[data-testid='prdvButton']") - .invoke("removeAttr", "target") - .click() - .then(() => { - // eslint-disable-next-line cypress/no-unnecessary-waiting - cy.wait(5000).then(() => { - cy.get("input[name='firstname']").click() - cy.get("input[name='firstname']").type("John") - cy.get("input[name='lastname']").click() - cy.get("input[name='lastname']").type("Doe") - cy.get("input[name='phone']").click() - cy.get("input[name='phone']").type("0700000000") - cy.get("input[type='email']").click() - cy.get("input[type='email']").type(randomEmail) - cy.get("label:nth-of-type(2) > span.chakra-checkbox__control").click() - cy.get("label:nth-of-type(4) > span.chakra-checkbox__control").click() - cy.get("label:nth-of-type(11) > span.chakra-checkbox__control").click() - cy.get("input[name='applicantMessageToCfa']").click() - cy.get("input[name='applicantMessageToCfa']").type("horaires") - cy.get("button").click() - cy.wait("@submitRdv").then(() => { - cy.get("[data-testid='rdv-sent']") - }) - }) - }) - }) - }) - }) -}) diff --git a/cypress/e2e/ui/send-rdv-from-widget.cy.js b/cypress/e2e/ui/send-rdv-from-widget.cy.js index 2cd11a08c5..a6c1b5e5cf 100644 --- a/cypress/e2e/ui/send-rdv-from-widget.cy.js +++ b/cypress/e2e/ui/send-rdv-from-widget.cy.js @@ -1,27 +1,46 @@ describe("send-rdv-from-widget", () => { - it("tests send-rdv-from-widget", () => { - cy.viewport(1271, 721) - cy.visit("https://labonnealternance.apprentissage.beta.gouv.fr/recherche-apprentissage-formation") - cy.get("form > div > div.css-0 input").click() - cy.get("form > div > div.css-0 input").type("esth") - cy.get("#lang-switcher-item-0").click() - cy.get("div.css-iiltjv div.css-0 img").click() - cy.get("a:nth-of-type(1) div.css-17xle36").click() - cy.get("header a").click() - cy.get("form > input:nth-of-type(1)").click() - cy.get("form > input:nth-of-type(1)").type("John") - cy.get("form > input.css-jw8yg").click() - cy.get("form > input.css-jw8yg").type("Doe") - cy.get("div.css-0 > input").click() - cy.get("div.css-0 > input").type("0700000000") - cy.get("input[type='email']").click() - cy.get("input[type='email']").type("test-auto@nexistepas.fr") - cy.get("label:nth-of-type(2) > span.chakra-checkbox__control").click() - cy.get("label:nth-of-type(4) > span.chakra-checkbox__control").click() - cy.get("label:nth-of-type(11) > span.chakra-checkbox__control").click() - cy.get("input:nth-of-type(4)").click() - cy.get("input:nth-of-type(4)").type("horaires") - cy.get("button").click() + it("tests send-rdv-from-widget on " + Cypress.env("ui") + " --- " + Cypress.env("server"), () => { + cy.intercept("GET", Cypress.env("server") + "/api/v1/formations?*").as("submitTrainingCall") + cy.intercept("POST", Cypress.env("server") + "/api/appointment-request/validate").as("submitRdv") + + cy.generateRandomEmail("test-auto-", "@nexistepas.fr", 10).then((randomEmail) => { + cy.viewport(1254, 704) + cy.visit(Cypress.env("ui") + "/recherche-apprentissage-formation?displayMap=false") + cy.get("#headerFormJobField-input").click() + cy.get("#headerFormJobField-input").type("esth") + cy.get("#headerFormJobField-item-0").click() + cy.get("#headerFormJobField-input").should("have.value", "Esthétique") + cy.get("[data-testid='widget-form'] button").click() + + cy.wait("@submitTrainingCall").then(() => { + cy.get(".resultCard.training").first().click() + // eslint-disable-next-line cypress/unsafe-to-chain-command + cy.get("[data-testid='prdvButton']") + //.invoke("removeAttr", "target") + .click() + .then(() => { + // eslint-disable-next-line cypress/no-unnecessary-waiting + cy.wait(5000).then(() => { + cy.get("input[name='firstname']").click() + cy.get("input[name='firstname']").type("John") + cy.get("input[name='lastname']").click() + cy.get("input[name='lastname']").type("Doe") + cy.get("input[name='phone']").click() + cy.get("input[name='phone']").type("0700000000") + cy.get("input[type='email']").click() + cy.get("input[type='email']").type(randomEmail) + cy.get(".chakra-accordion__button").click() + cy.get("[data-testid='fieldset-reasons'] .chakra-collapse input:checkbox[id='reason-3']").click({ force: true }) + cy.get("[data-testid='fieldset-reasons'] .chakra-collapse input:checkbox[id='reason-10']").click({ force: true }) + cy.get("input[name='applicantMessageToCfa']").click() + cy.get("input[name='applicantMessageToCfa']").type("horaires") + cy.get("button[type='submit'][data-tracking-id='prendre-rdv-cfa']").click() + cy.wait("@submitRdv").then(() => { + cy.get("[data-testid='DemandeDeContactConfirmationTitle']") + }) + }) + }) + }) + }) }) }) -//# recorderSourceMap=BCBDBEAEAEAEBFBGBHBIBJAJBKBLBMBNBOBPBQBRBSBTBUBVBWBXAXBYA diff --git a/cypress/e2e/ui/send-spontaneous-application-modified.cy.js b/cypress/e2e/ui/send-spontaneous-application-modified.cy.js deleted file mode 100644 index bca045008e..0000000000 --- a/cypress/e2e/ui/send-spontaneous-application-modified.cy.js +++ /dev/null @@ -1,45 +0,0 @@ -describe("send-spontaneous-application", () => { - it("tests send-spontaneous-application on " + Cypress.env("host"), () => { - cy.on("uncaught:exception", () => { - return false - }) - - cy.intercept("GET", Cypress.env("host") + "/api/v1/jobs?*").as("submitJobCall") - cy.intercept("POST", Cypress.env("host") + "/api/application").as("submitApplication") - - cy.generateRandomEmail("test-auto-", "@nexistepas.fr", 10).then((randomEmail) => { - cy.viewport(1254, 704) - cy.visit(Cypress.env("host") + "?displayMap=false") - cy.get("#headerFormJobField-input").click() - cy.get("#headerFormJobField-input").type("Compta") - cy.get("#headerFormJobField-item-0").click() - cy.get("#headerFormJobField-input").should("have.value", "Comptabilité, gestion de paie") - cy.get("#headerFormPlaceField-input").click() - cy.get("#headerFormPlaceField-input").type("Marseil") - cy.get("#headerFormPlaceField-item-0").click() - cy.get("[data-testid='widget-form'] select[data-testid='diploma']").select("4 (BAC...)") - cy.get("[data-testid='widget-form'] button").click() - - cy.wait("@submitJobCall").then(() => { - cy.get(".resultCard.lba.hasEmail").first().click() - cy.get("[data-testid='CandidatureSpontanee'] button").click() - cy.get("[data-testid='lastName']").click() - cy.get("[data-testid='lastName']").type("Doe") - cy.get("[data-testid='firstName']").click() - cy.get("[data-testid='firstName']").type("John") - cy.get("[data-testid='email']").click() - cy.get("[data-testid='email']").type(randomEmail) - cy.get("[data-testid='phone']").click() - cy.get("[data-testid='phone']").type("0700000000") - cy.get("[data-testid='message']").click() - cy.get("[data-testid='message']").type("Madame, Monsieur,\nEtant actuellement à la recherche d’un emploi, ...") - cy.get("[data-testid='fileDropzone']").selectFile("cypress/fixtures/CV - John Doe.pdf", { action: "drag-drop" }) - cy.get("[data-testid='candidature-not-sent']").click() - - cy.wait("@submitApplication").then(() => { - cy.get("[data-testid='CandidatureSpontaneeWorked']") - }) - }) - }) - }) -}) diff --git a/cypress/e2e/ui/send-spontaneous-application.cy.js b/cypress/e2e/ui/send-spontaneous-application.cy.js index 4a43cde8fa..531acf8839 100644 --- a/cypress/e2e/ui/send-spontaneous-application.cy.js +++ b/cypress/e2e/ui/send-spontaneous-application.cy.js @@ -1,30 +1,45 @@ describe("send-spontaneous-application", () => { - it("tests send-spontaneous-application", () => { - cy.viewport(1254, 704) - cy.visit("https://labonnealternance-recette.apprentissage.beta.gouv.fr/") - cy.get("form > div > div.css-0 input").click() - cy.get("form > div > div.css-0 input").type("C") - cy.get("form > div > div.css-0 input").type("Compta") - cy.get("#lang-switcher-item-0").click() - cy.get("div.css-1kw2fa0 input").click() - cy.get("div.css-1kw2fa0 input").type("Marseil") - cy.get("#lang-switcher-item-0 > strong").click() - cy.get("div.css-6st093 div:nth-of-type(4) select").click() - cy.get("div.css-6st093 div:nth-of-type(4) select").type("4 (BAC...)") - cy.get("div.css-uos98o img").click() - cy.get("[data-testid='lba80781306800036'] div.css-17xle36").click() - cy.get("[data-testid='CandidatureSpontanee'] button").click() - cy.get("[data-testid='lastName']").click() - cy.get("[data-testid='lastName']").type("Doe") - cy.get("[data-testid='firstName']").type("John") - cy.get("[data-testid='email']").rightclick() - cy.get("[data-testid='email']").type("test-auto@nexistepas.fr") - cy.get("[data-testid='phone']").click() - cy.get("[data-testid='phone']").type("0700000000") - cy.get("p.css-1egmowt").click() - cy.get("[data-testid='fileDropzone']").type("C:\\fakepath\\CV - John Doe.docx") - cy.get("[data-testid='candidature-not-sent']").click() - cy.get("div:nth-of-type(4) h2").click() + it("tests send-spontaneous-application on " + Cypress.env("ui") + " --- " + Cypress.env("server"), () => { + cy.on("uncaught:exception", () => { + return false + }) + + cy.intercept("GET", Cypress.env("server") + "/api/v1/jobs?*").as("submitJobCall") + cy.intercept("POST", Cypress.env("server") + "/api/v1/application").as("submitApplication") + + cy.generateRandomEmail("test-auto-", "@nexistepas.fr", 10).then((randomEmail) => { + cy.viewport(1254, 704) + cy.visit(Cypress.env("ui") + "?displayMap=false") + cy.get("#headerFormJobField-input").click() + cy.get("#headerFormJobField-input").type("Compta") + cy.get("#headerFormJobField-item-0").click() + cy.get("#headerFormJobField-input").should("have.value", "Comptabilité, gestion de paie") + cy.get("#headerFormPlaceField-input").click() + cy.get("#headerFormPlaceField-input").type("Marseil") + cy.get("#headerFormPlaceField-item-0").click() + cy.get("[data-testid='widget-form'] select[data-testid='diploma']").select("4 (BAC...)") + cy.get("[data-testid='widget-form'] button").click() + + cy.wait("@submitJobCall").then(() => { + cy.get(".resultCard.lba.hasEmail").first().click() + cy.get("[data-testid='CandidatureSpontanee'] button").click() + cy.get("[data-testid='lastName']").click() + cy.get("[data-testid='lastName']").type("Doe") + cy.get("[data-testid='firstName']").click() + cy.get("[data-testid='firstName']").type("John") + cy.get("[data-testid='email']").click() + cy.get("[data-testid='email']").type(randomEmail) + cy.get("[data-testid='phone']").click() + cy.get("[data-testid='phone']").type("0700000000") + cy.get("[data-testid='message']").click() + cy.get("[data-testid='message']").type("Madame, Monsieur,\nEtant actuellement à la recherche d’un emploi, ...") + cy.get("[data-testid='fileDropzone']").selectFile("cypress/fixtures/CV - John Doe.pdf", { action: "drag-drop" }) + cy.get("[data-testid='candidature-not-sent']").click() + + cy.wait("@submitApplication").then(() => { + cy.get("[data-testid='CandidatureSpontaneeWorked']") + }) + }) + }) }) }) -//# recorderSourceMap=BCBDBEAEAEAEAEAEBFBGAGBHBIBJBKBLBMBNBOBPAPBQAQBRBSASASBTATATBUBVBWBXBYBZBaAaB diff --git a/package.json b/package.json index ac747b626d..292cd98471 100644 --- a/package.json +++ b/package.json @@ -53,10 +53,11 @@ "foreach:ci": "yarn foreach:seq -p", "e2e": "cypress open", "e2e:headless": "cypress run", - "e2e:production": "cypress run --env host=https://labonnealternance-recette.apprentissage.beta.gouv.fr", + "e2e:production": "cypress run --env host=https://labonnealternance.apprentissage.beta.gouv.fr", + "e2e:recette": "cypress run --env ui=https://labonnealternance-recette.apprentissage.beta.gouv.fr,server=https://labonnealternance-recette.apprentissage.beta.gouv.fr", "e2e:convert": "chrome-recorder cypress/records/ui/*.json --output=cypress/e2e/ui; chrome-recorder cypress/records/ui_espace_pro/*.json --output=cypress/e2e/ui_espace_pro", "e2e:convert2": "node cypress/convertRecords.mjs", - "e2e:specific": "cypress run --spec=./cypress/e2e/ui/send-job-application.cy.js --env host=localhost" + "e2e:specific": "cypress run --spec=./cypress/e2e/ui/send-rdv-from-widget.cy.js --env ui=http://localhost:3000,server=http://localhost:5001" }, "dependencies": { "husky": "^8.0.3" diff --git a/ui/components/RDV/DemandeDeContact.tsx b/ui/components/RDV/DemandeDeContact.tsx index 050b5e6ed4..9c601c6763 100644 --- a/ui/components/RDV/DemandeDeContact.tsx +++ b/ui/components/RDV/DemandeDeContact.tsx @@ -162,37 +162,19 @@ const DemandeDeContact = (props: Props) => { Nom * - + {formik.errors.lastname} Prénom * - + {formik.errors.firstname} E-mail * - + {suggestedEmails.length > 0 && ( @@ -222,7 +204,7 @@ const DemandeDeContact = (props: Props) => { Téléphone * - + {formik.errors.phone} @@ -255,8 +237,8 @@ const DemandeDeContact = (props: Props) => { - {applicantReasons.map(({ key, checked, title }) => ( - + {applicantReasons.map(({ key, checked, title }, index) => ( + {title} ))} @@ -384,6 +366,7 @@ const DemandeDeContact = (props: Props) => { color="white" background="bluefrance.500" borderRadius="8px" + data-testid="prdvButton" sx={{ textDecoration: "none", _hover: {