diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml
index b4a3bf544..4dda1f933 100644
--- a/.github/workflows/deploy.yaml
+++ b/.github/workflows/deploy.yaml
@@ -4,35 +4,33 @@ on:
types: [opened, synchronize]
push:
branches: [master, demo, next]
+
jobs:
- build:
+ deploy-context:
runs-on: ubuntu-18.04
- outputs:
- fr: ${{ env.FR_SITE }}
- en: ${{ env.EN_SITE }}
- publicodes: ${{ env.PUBLICODES_SITE }}
- steps:
- - name: Set branch name
- id: vars
- run: echo ::set-output name=branch::${GITHUB_REF#refs/*/}
- - if: github.event_name == 'pull_request'
- name: 'Set site name for pull request deploy'
+ outputs:
+ env-name: ${{ steps.deploy-env.outputs.name }}
+ fr_url: ${{ steps.base-urls.outputs.fr }}
+ en_url: ${{ steps.base-urls.outputs.en }}
+ publicodes_url: ${{ steps.base-urls.outputs.publicodes }}
+ steps:
+ - id: deploy-env
run:
- echo "FR_SITE=https://deploy-preview-${{ github.event.number }}--syso.netlify.app\${path}" >> $GITHUB_ENV;
- echo "EN_SITE=https://deploy-preview-${{ github.event.number }}--syso.netlify.app\${path}?s%3Dm" >> $GITHUB_ENV;
- echo "PUBLICODES_SITE=deploy-preview-${{ github.event.number }}--syso.netlify.app\${path}?s%3Dp" >> $GITHUB_ENV;
- - if: github.event_name == 'push' && github.ref != 'refs/heads/master'
- name: 'Set site name for named branch deploy'
- run:
- echo "FR_SITE=https://${{ steps.vars.outputs.branch }}.mon-entreprise.fr\${path}" >> $GITHUB_ENV;
- echo "EN_SITE=https://${{ steps.vars.outputs.branch }}.mon-entreprise.fr\${path}?s%3Dm" >> $GITHUB_ENV;
- echo "PUBLICODES_SITE=https://${{ steps.vars.outputs.branch }}.mon-entreprise.fr\${path}?s%3Dp" >> $GITHUB_ENV;
- - if: github.ref == 'refs/heads/master'
- name: 'Set site name for production deploy'
- run:
- echo "FR_SITE=https://mon-entreprise.fr\${path}" >> $GITHUB_ENV;
- echo "EN_SITE=https://mycompanyinfrance.fr\${path}" >> $GITHUB_ENV
- echo "PUBLICODES_SITE=https://publi.codes\${path}" >> $GITHUB_ENV
+ echo "::set-output name=name::${{ github.event.number || '${GITHUB_REF#refs/*/}' }}"
+ - id: base-urls
+ run:
+ echo "::set-output name=fr::${{ steps.deploy-env.outputs.name == 'master' && 'https://mon-entreprise.fr' || format('https://{0}--syso.netlify.app', steps.deploy-env.outputs.name) }}";
+ echo "::set-output name=en::${{ steps.deploy-env.outputs.name == 'master' && 'https://mycompanyinfrance.fr' || format('https://{0}-en--syso.netlify.app', steps.deploy-env.outputs.name) }}";
+ echo "::set-output name=publicodes::${{ steps.deploy-env.outputs.name == 'master' && 'https://publi.codes' || format('https://{0}-publicodes--syso.netlify.app', steps.deploy-env.outputs.name) }}";
+
+ build:
+ needs: deploy-context
+ env:
+ FR_BASE_URL: ${{ needs.deploy-context.outputs.fr_url }}
+ EN_BASE_URL: ${{ needs.deploy-context.outputs.en_url }}
+ PUBLICODES_BASE_URL: ${{ needs.deploy-context.outputs.publicodes_url }}
+ runs-on: ubuntu-18.04
+ steps:
- uses: actions/checkout@v2
- uses: actions/cache@v2
with:
@@ -48,28 +46,74 @@ jobs:
- name: Build app
run: yarn workspace mon-entreprise build
env:
- # Deploy dependant config (change for production settings)
- AT_INTERNET_SITE_ID: ${{ github.ref == 'refs/heads/master' && 617190 || 617189 }}
+ AT_INTERNET_SITE_ID: ${{ needs.deploy-context.outputs.env-name == 'master' && 617190 || 617189 }}
NODE_ENV: production
- - name: Deploy to Netlify
- id: deploy-netlify
+ - name: Replace site placeholders in netlify.toml redirection file
+ run:
+ sed -i "s|:SITE_FR|$FR_BASE_URL|g" netlify.toml;
+ sed -i "s|:SITE_EN|$EN_BASE_URL|g" netlify.toml;
+ sed -i "s|:SITE_PUBLICODES|$PUBLICODES_BASE_URL|g" netlify.toml
+ - uses: actions/upload-artifact@v2
+ with:
+ name: static-site
+ path: |
+ mon-entreprise/dist/**
+ netlify.toml
+ if-no-files-found: error
+
+ deploy-preview:
+ needs: [build, deploy-context]
+ runs-on: ubuntu-18.04
+ if: needs.deploy-context.outputs.env-name != 'master'
+ strategy:
+ matrix:
+ site: ['', 'en', 'publicodes']
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/download-artifact@v2
+ with:
+ name: static-site
+ - id: deploy-netlify
uses: nwtgck/actions-netlify@v1.1
with:
publish-dir: './mon-entreprise/dist'
netlify-config-path: ./netlify.toml
- production-branch: master
- production-deploy: ${{ github.ref == 'refs/heads/master' }}
+ production-deploy: false
github-token: ${{ secrets.GITHUB_TOKEN }}
enable-commit-status: true
enable-commit-comment: false
- github-deployment-environment: ${{ env.ENV_NAME }}
- alias: ${{ env.ENV_NAME }}
- deploy-message: ${{ github.event.pull_request.title || steps.vars.outputs.branch}}
+ github-deployment-environment: ${{ needs.deploy-context.outputs.env-name }}
+ alias: ${{ needs.deploy-context.outputs.env-name }}${{ matrix.site && format('-{0}', matrix.site) }}
+ deploy-message: ${{ github.event.pull_request.title || needs.deploy-context.outputs.env-name }} (${{ matrix.site || 'fr' }})
# Disabled because we create our own customized comment
enable-pull-request-comment: false
env:
- ENV_NAME: ${{ github.event_name == 'push' && steps.vars.outputs.branch || format('deploy-preview-{0}', github.event.number) }}
+ NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
+ NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
+ timeout-minutes: 1
+
+ deploy-prod:
+ needs: [build, deploy-context]
+ runs-on: ubuntu-18.04
+ if: needs.deploy-context.outputs.env-name == 'master'
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/download-artifact@v2
+ with:
+ name: Static site
+ - id: deploy-netlify
+ uses: nwtgck/actions-netlify@v1.1
+ with:
+ publish-dir: './mon-entreprise/dist'
+ netlify-config-path: ./netlify.toml
+ production-deploy: true
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ enable-commit-status: true
+ enable-commit-comment: false
+ github-deployment-environment: master
+ deploy-message: Deploy production branch
+ env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
timeout-minutes: 1
@@ -77,7 +121,7 @@ jobs:
post-comment:
runs-on: ubuntu-18.04
if: github.event_name == 'pull_request'
- needs: build
+ needs: [deploy-preview, deploy-context]
steps:
- name: Find Comment
uses: peter-evans/find-comment@v1
@@ -87,57 +131,80 @@ jobs:
comment-author: 'github-actions[bot]'
body-includes: netlify
- name: Create comment
- if: steps.find-comment.outputs.comment-id == 0
uses: peter-evans/create-or-update-comment@v1
with:
+ comment-id: ${{ steps.find-comment.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
+ edit-mode: replace
body: |
- 🚀 La branche est déployée ! ${{ steps.deploy-netlify.outputs.deploy-url }}
-
- _Voir aussi : [version anglaise](${{ steps.deploy-netlify.outputs.deploy-url }}?s=m) | [site publicodes](${{ steps.deploy-netlify.outputs.deploy-url }}?s=p)_
+ 🚀 La branche est déployée !
+
+ - mon-entreprise : ${{ needs.deploy-context.outputs.fr_url }}
+ - mycompanyinfrance : ${{ needs.deploy-context.outputs.en_url }}
+ - publicodes : ${{ needs.deploy-context.outputs.publicodes_url }}
+
end-to-end-test:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
runs-on: ubuntu-16.04
- needs: build
+ # We need to specify always() https://github.com/actions/runner/issues/491
+ if: always() && (needs.deploy-prod.result == 'success' || needs.deploy-preview.result == 'success')
+ needs: [deploy-context, deploy-prod, deploy-preview]
strategy:
fail-fast: false
matrix:
- lang: ['fr', 'en']
+ site: ['fr', 'en', 'publicodes']
+ include:
+ - site: fr
+ integrationFolder: mon-entreprise
+ baseUrl: ${{ needs.deploy-context.outputs.fr_url }}
+ language: fr
+ test-external: ${{ needs.deploy-context.outputs.env-name == 'master' }}
+ - site: en
+ integrationFolder: mon-entreprise
+ baseUrl: ${{ needs.deploy-context.outputs.en_url }}
+ language: en
+ - site: publicodes
+ baseUrl: ${{ needs.deploy-context.outputs.publicodes_url }}
+ integrationFolder: publi.codes
+ language: fr
+
# TODO : activate parallelization https://github.com/cypress-io/github-action#parallel (missing https://github.com/cypress-io/github-action#custom-build-id)
# containers: [1, 2]
# TODO : browser: ['firefox', 'chrome']
+
steps:
- name: Checkout
uses: actions/checkout@v2
+ - uses: actions/cache@v2
+ # Custom cache as we do not care about installing all the other dependancies
+ with:
+ path: |
+ ~/.cache/Cypress
+ node_modules
+ key: cypress-cache-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
+ - run: npm i cypress cypress-plugin-tab
- name: Test mon-entreprise
uses: cypress-io/github-action@v2
- if: matrix.lang == 'fr' || !github.event.pull_request
with:
+ install: false
working-directory: mon-entreprise
record: true
- tag: mon-entreprise-${{ matrix.lang }}
- config: integrationFolder=cypress/integration/mon-entreprise
- env: site=${{ needs.build.outputs[matrix.lang] }},language=${{ matrix.lang }}
+ tag: ${{ matrix.site }},${{ needs.deploy-context.outputs.env-name }}-deploy
+ config: integrationFolder=cypress/integration/${{ matrix.integrationFolder }},baseUrl=${{ matrix.baseUrl }}
+ env: language=${{ matrix.language }}
+ env:
+ COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }}
- - name: Test publicodes
- if: matrix.lang == 'fr'
- uses: cypress-io/github-action@v2
- with:
- record: true
- tag: publicodes
- config: integrationFolder=cypress/integration/publi.codes
- env: site=${{ needs.build.outputs.publicodes }}
-
- name: Test external integration
- if: matrix.lang == 'fr' && github.ref == 'refs/heads/master'
+ if: matrix.test-external
uses: cypress-io/github-action@v2
with:
- browser: chrome
+ install: false
record: true
tag: external-integration
- config: integrationFolder=cypress/integration/external
+ config: integrationFolder=cypress/integration/external, baseUrl=${{ matrix.baseUrl }}
\ No newline at end of file
diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
index b282a3ba3..324e7baa8 100644
--- a/.github/workflows/test.yaml
+++ b/.github/workflows/test.yaml
@@ -1,5 +1,6 @@
name: Tests
on: push
+
jobs:
lint:
runs-on: ubuntu-18.04
diff --git a/mon-entreprise/cypress.json b/mon-entreprise/cypress.json
index cd42eb566..8377ceef0 100644
--- a/mon-entreprise/cypress.json
+++ b/mon-entreprise/cypress.json
@@ -1,7 +1,7 @@
{
"projectId": "jxcngh",
+ "baseUrl": "http://localhost:8080/mon-entreprise",
"env": {
- "site": "http://localhost:8080/mon-entreprise/${path}",
"language": "fr"
},
"integrationFolder": "cypress/integration/mon-entreprise",
diff --git a/mon-entreprise/cypress/integration/mon-entreprise/covid19.js b/mon-entreprise/cypress/integration/mon-entreprise/covid19.js
index 18e1db2bf..489af713e 100644
--- a/mon-entreprise/cypress/integration/mon-entreprise/covid19.js
+++ b/mon-entreprise/cypress/integration/mon-entreprise/covid19.js
@@ -10,11 +10,7 @@ describe('Page covid-19', function () {
if (!fr) {
return
}
- before(() =>
- cy.visit(
- Cypress.env('site').replace('${path}', '/simulateurs/chômage-partiel')
- )
- )
+ before(() => cy.visit('/simulateurs/chômage-partiel'))
it('should not crash', () => {
cy.contains('Salaire brut mensuel')
})
diff --git a/mon-entreprise/cypress/integration/mon-entreprise/demande-mobilité.js b/mon-entreprise/cypress/integration/mon-entreprise/demande-mobilité.js
index 43e256a10..8e4b8b8bd 100644
--- a/mon-entreprise/cypress/integration/mon-entreprise/demande-mobilité.js
+++ b/mon-entreprise/cypress/integration/mon-entreprise/demande-mobilité.js
@@ -4,9 +4,7 @@ describe('Formulaire demande mobilité', function () {
if (!fr) {
return
}
- before(() =>
- cy.visit(Cypress.env('site').replace('${path}', '/gérer/demande-mobilité'))
- )
+ before(() => cy.visit('/gérer/demande-mobilité'))
it('should not crash', () => {
cy.contains('Demande de mobilité internationale')
})
diff --git a/mon-entreprise/cypress/integration/mon-entreprise/gérer.js b/mon-entreprise/cypress/integration/mon-entreprise/gérer.js
index 3a6a3a818..fa85cb517 100644
--- a/mon-entreprise/cypress/integration/mon-entreprise/gérer.js
+++ b/mon-entreprise/cypress/integration/mon-entreprise/gérer.js
@@ -1,7 +1,7 @@
describe('Manage page test', function () {
const fr = Cypress.env('language') === 'fr'
beforeEach(() => {
- cy.visit(Cypress.env('site').replace('${path}', fr ? '/gérer' : '/manage'))
+ cy.visit(fr ? '/gérer' : '/manage')
})
it('should not crash', function () {
cy.contains(fr ? 'Gérer mon activité' : 'Manage my business')
diff --git a/mon-entreprise/cypress/integration/mon-entreprise/iframe.js b/mon-entreprise/cypress/integration/mon-entreprise/iframe.js
index b8644f845..86b694f5e 100644
--- a/mon-entreprise/cypress/integration/mon-entreprise/iframe.js
+++ b/mon-entreprise/cypress/integration/mon-entreprise/iframe.js
@@ -3,7 +3,7 @@ describe('Iframe integration test', function () {
return
}
it('should display an iframe of the simulateur', function () {
- cy.visit(Cypress.env('site').replace('${path}', '/dev/integration-test'))
+ cy.visit('/dev/integration-test')
cy.contains('Visualiser').click()
cy.wait(1000)
cy.get('#simulateurEmbauche').iframe().contains('Salaire net')
diff --git a/mon-entreprise/cypress/integration/mon-entreprise/landing.js b/mon-entreprise/cypress/integration/mon-entreprise/landing.js
index a24879f40..aeec373db 100644
--- a/mon-entreprise/cypress/integration/mon-entreprise/landing.js
+++ b/mon-entreprise/cypress/integration/mon-entreprise/landing.js
@@ -1,16 +1,16 @@
describe('Landing test', function () {
const fr = Cypress.env('language') === 'fr'
it('should not crash', function () {
- cy.visit(Cypress.env('site').replace('${path}', '/'))
+ cy.visit('/')
cy.get('img[alt="logo mon-entreprise.fr"]').should('be.visible')
})
it('should display urssaf and marianne logo', function () {
- cy.visit(Cypress.env('site').replace('${path}', '/'))
+ cy.visit('/')
cy.get('img[alt="logo urssaf"]').should('be.visible')
cy.get('img[alt="logo marianne"]').should('be.visible')
})
it('should display actionnable items', function () {
- cy.visit(Cypress.env('site').replace('${path}', '/'))
+ cy.visit('/')
cy.contains(fr ? 'Créer une entreprise' : 'Create a company')
cy.contains(fr ? 'Gérer mon activité' : 'Manage my business')
})
diff --git a/mon-entreprise/cypress/integration/mon-entreprise/navigation.js b/mon-entreprise/cypress/integration/mon-entreprise/navigation.js
index 962f4d097..190e93034 100644
--- a/mon-entreprise/cypress/integration/mon-entreprise/navigation.js
+++ b/mon-entreprise/cypress/integration/mon-entreprise/navigation.js
@@ -1,12 +1,7 @@
describe('Navigation', function () {
const fr = Cypress.env('language') === 'fr'
it('should enable switching site language', () => {
- cy.visit(
- Cypress.env('site').replace(
- '${path}',
- fr ? '/créer/auto-entrepreneur' : '/create/auto-entrepreneur'
- )
- )
+ cy.visit(fr ? '/créer/auto-entrepreneur' : '/create/auto-entrepreneur')
cy.contains(fr ? 'Switch to English' : 'Passer en français').click()
cy.url().should(
'include',
@@ -15,9 +10,7 @@ describe('Navigation', function () {
})
it('should go back to home when clicking on logo', () => {
- cy.visit(
- Cypress.env('site').replace('${path}', '/documentation/contrat-salarié')
- )
+ cy.visit('/documentation/contrat-salarié')
cy.get('img[alt^="logo mon-entreprise"]').click()
cy.url().should('be', Cypress.baseUrl)
})
diff --git a/mon-entreprise/cypress/integration/mon-entreprise/simulateurs.js b/mon-entreprise/cypress/integration/mon-entreprise/simulateurs.js
index 15591f035..6e7ec1009 100644
--- a/mon-entreprise/cypress/integration/mon-entreprise/simulateurs.js
+++ b/mon-entreprise/cypress/integration/mon-entreprise/simulateurs.js
@@ -17,11 +17,7 @@ describe('Simulateurs', function () {
'profession-liberale/chirurgien-dentiste',
].forEach((simulateur) =>
describe(simulateur, () => {
- before(() =>
- cy.visit(
- Cypress.env('site').replace('${path}', `/simulateurs/${simulateur}`)
- )
- )
+ before(() => cy.visit(`/simulateurs/${simulateur}`))
it('should not crash', function () {
cy.get(inputSelector)
})
@@ -84,11 +80,7 @@ describe('Simulateur auto-entrepreneur', () => {
if (!fr) {
return
}
- before(() =>
- cy.visit(
- Cypress.env('site').replace('${path}', '/simulateurs/auto-entrepreneur')
- )
- )
+ before(() => cy.visit('/simulateurs/auto-entrepreneur'))
it('should allow to enter the date of creation', () => {
cy.get(inputSelector).first().type('{selectall}50000')
@@ -123,7 +115,7 @@ describe('Simulateur salarié mode partagé', () => {
return
}
it('should set input value from URL', function () {
- cy.visit(Cypress.env('site').replace('${path}', urlWithState))
+ cy.visit(urlWithState)
cy.wait(800)
cy.get(brutInputSelector).first().invoke('val').should('be', '1 539')
@@ -131,7 +123,7 @@ describe('Simulateur salarié mode partagé', () => {
cy.get('span.answerContent').first().contains('CDD')
})
it('should set URL from input value', function () {
- cy.visit(Cypress.env('site').replace('${path}', simulatorUrl))
+ cy.visit(simulatorUrl)
cy.get(brutInputSelector).first().type('{selectall}1539')
cy.wait(1000)
cy.get('.step').find('input[value="\'CDD\'"]').click({ force: true })
@@ -147,9 +139,7 @@ describe('Simulateur salarié', () => {
if (!fr) {
return
}
- before(() =>
- cy.visit(Cypress.env('site').replace('${path}', '/simulateurs/salarié'))
- )
+ before(() => cy.visit('/simulateurs/salarié'))
it('should persist the current simulation (persistSimulation)', function () {
cy.get(inputSelector).first().type('{selectall}42')
@@ -157,15 +147,13 @@ describe('Simulateur salarié', () => {
cy.contains('Passer').click()
cy.contains('Passer').click()
cy.wait(1600)
- cy.visit(
- Cypress.env('site').replace('${path}', '/simulateurs/auto-entrepreneur')
- )
+ cy.visit('/simulateurs/auto-entrepreneur')
cy.get(inputSelector).first().type('{selectall}007')
cy.contains('Passer').click()
cy.contains('Passer').click()
cy.contains('Passer').click()
cy.wait(1600)
- cy.visit(Cypress.env('site').replace('${path}', '/simulateurs/salarié'))
+ cy.visit('/simulateurs/salarié')
cy.contains('Retrouver ma simulation').click()
cy.get(inputSelector).first().invoke('val').should('match', /42/)
})
@@ -181,7 +169,7 @@ describe('Simulateur salarié', () => {
describe('part time contract', () => {
before(() => {
- cy.visit(Cypress.env('site').replace('${path}', '/simulateurs/salarié'))
+ cy.visit('/simulateurs/salarié')
cy.get('input[name$="brut de base"]').click()
cy.get('button').contains('SMIC').click()
cy.contains('Voir mes paramètres').click()
diff --git a/mon-entreprise/cypress/integration/mon-entreprise/status.js b/mon-entreprise/cypress/integration/mon-entreprise/status.js
index b0fd168da..e08703de9 100644
--- a/mon-entreprise/cypress/integration/mon-entreprise/status.js
+++ b/mon-entreprise/cypress/integration/mon-entreprise/status.js
@@ -1,7 +1,7 @@
describe('Status guide', function () {
const fr = Cypress.env('language') === 'fr'
beforeEach(() => {
- cy.visit(Cypress.env('site').replace('${path}', fr ? '/créer' : '/create'))
+ cy.visit(fr ? '/créer' : '/create')
cy.get('.cta').click()
})
diff --git a/mon-entreprise/cypress/integration/publi.codes/index.js b/mon-entreprise/cypress/integration/publi.codes/index.js
index 3eb08ad39..ba756f0c4 100644
--- a/mon-entreprise/cypress/integration/publi.codes/index.js
+++ b/mon-entreprise/cypress/integration/publi.codes/index.js
@@ -1,6 +1,6 @@
describe('Navigation', function () {
it('landing should not crash', function () {
- cy.visit(Cypress.env('site').replace('${path}', '/'))
+ cy.visit('/')
})
it('liste des mécanismes should not crash', function () {
cy.contains('Documentation').click()
diff --git a/mon-entreprise/package.json b/mon-entreprise/package.json
index db9020170..8320a0524 100644
--- a/mon-entreprise/package.json
+++ b/mon-entreprise/package.json
@@ -108,7 +108,7 @@
"build:legacy": "yarn run webpack --config webpack.prod.legacyBrowser.js",
"build:stats": "webpack --config webpack.prod.js --profile --json > stats.json",
"build:analyze-bundle": "ANALYZE_BUNDLE=1 yarn run build",
- "build:dev": "FR_SITE='http://localhost:5000${path}' EN_SITE='http://localhost:5001${path}' yarn run build",
+ "build:dev": "FR_BASE_URL='http://localhost:5000${path}' EN_BASE_URL='http://localhost:5001${path}' yarn run build",
"clean": "rimraf dist node_modules source/data",
"test": "yarn test:file \"./{,!(node_modules)/**/}!(webpack).test.{js,ts}\"",
"test:file": "yarn mocha-webpack --webpack-config ./webpack.dev.js --include test/componentTestSetup.js --require mock-local-storage --require test/helpers/browser.js",
diff --git a/mon-entreprise/source/iframe-integration-script.js b/mon-entreprise/source/iframe-integration-script.js
index 7aba52d7c..52af130ca 100644
--- a/mon-entreprise/source/iframe-integration-script.js
+++ b/mon-entreprise/source/iframe-integration-script.js
@@ -12,10 +12,9 @@ let script =
fr = lang === 'fr',
baseUrl =
script.dataset.iframeUrl ||
- (fr ? process.env.FR_SITE : process.env.EN_SITE).replace(
- '${path}',
- '/iframes/' + moduleName
- ),
+ (fr ? process.env.FR_BASE_URL : process.env.EN_BASE_URL) +
+ '/iframes/' +
+ moduleName,
integratorUrl = encodeURIComponent(window.location.href.toString()),
src =
baseUrl +
@@ -50,10 +49,9 @@ const moduleToSitePath = {
'simulateur-independant': '/simulateurs/indépendant',
'simulateur-dirigeantsasu': '/simulateurs/dirigeant-sasu',
}
-const simulateurLink = process.env.FR_SITE.replace(
- '${path}',
- moduleToSitePath[moduleName] ?? ''
-)
+const simulateurLink =
+ process.env.FR_BASE_URL + moduleToSitePath[moduleName] ?? ''
+
const url = new URL(simulateurLink, window.location.origin)
const params = new URLSearchParams(url.search)
params.append('utm_source', 'iframe')
@@ -76,17 +74,14 @@ links.innerHTML = `
diff --git a/mon-entreprise/source/redirects.js b/mon-entreprise/source/redirects.js
index db32391a1..e548b107f 100644
--- a/mon-entreprise/source/redirects.js
+++ b/mon-entreprise/source/redirects.js
@@ -3,11 +3,9 @@ import netlifyToml from '../../netlify.toml'
export default netlifyToml.redirects
.filter(({ from, status }) => status === 301 && !from.startsWith('https'))
- .map(({ from, to }) => (
-
- ))
+ .map(({ from, to }) => ({
+ from: decodeURIComponent(from.replace(/^:.*\//, '')),
+ to: decodeURIComponent(to.replace(/^:.*\//, '').replace(':splat', '*')),
+ }))
+ .filter(({ from, to }) => from != to)
+ .map((props) => )
diff --git a/mon-entreprise/source/sitePaths.ts b/mon-entreprise/source/sitePaths.ts
index bef1568d6..fab64fcb4 100644
--- a/mon-entreprise/source/sitePaths.ts
+++ b/mon-entreprise/source/sitePaths.ts
@@ -187,12 +187,12 @@ export const generateSiteMap = (sitePaths: SitePathsType): SiteMap =>
sitePaths
)
-const enSiteMap = generateSiteMap(
- constructLocalizedSitePath('en')
-).map((path) => (process.env.EN_SITE || '').replace('${path}', path))
-const frSiteMap = generateSiteMap(
- constructLocalizedSitePath('fr')
-).map((path) => (process.env.FR_SITE || '').replace('${path}', path))
+const enSiteMap = generateSiteMap(constructLocalizedSitePath('en')).map(
+ (path) => process.env.EN_BASE_URL + path
+)
+const frSiteMap = generateSiteMap(constructLocalizedSitePath('fr')).map(
+ (path) => process.env.FR_BASE_URL + path
+)
export const hrefLangLink = {
en: zipObj(
diff --git a/mon-entreprise/source/types/app-env.d.ts b/mon-entreprise/source/types/app-env.d.ts
index 44768dfa3..f5c48f147 100644
--- a/mon-entreprise/source/types/app-env.d.ts
+++ b/mon-entreprise/source/types/app-env.d.ts
@@ -1,7 +1,7 @@
declare namespace NodeJS {
interface ProcessEnv {
- EN_SITE: string
- FR_SITE: string
+ EN_BASE_URL: string
+ FR_BASE_URL: string
NODE_ENV: 'development' | 'production' | 'test'
ANALYZE_BUNDLE: '0' | '1'
diff --git a/mon-entreprise/webpack.common.js b/mon-entreprise/webpack.common.js
index 9fe4ece2c..6d00589a1 100644
--- a/mon-entreprise/webpack.common.js
+++ b/mon-entreprise/webpack.common.js
@@ -127,8 +127,8 @@ module.exports.default = {
plugins: [
new MonacoWebpackPlugin(),
new EnvironmentPlugin({
- EN_SITE: '/infrance${path}',
- FR_SITE: '/mon-entreprise${path}',
+ EN_BASE_URL: 'http://localhost:8080/infrance',
+ FR_BASE_URL: 'http://localhost:8080/mon-entreprise',
AT_INTERNET_SITE_ID: '',
}),
new EnvironmentPlugin({
diff --git a/mon-entreprise/webpack.prod.legacyBrowser.js b/mon-entreprise/webpack.prod.legacyBrowser.js
index c754b1e43..fea7c6044 100644
--- a/mon-entreprise/webpack.prod.legacyBrowser.js
+++ b/mon-entreprise/webpack.prod.legacyBrowser.js
@@ -23,8 +23,8 @@ module.exports = {
GITHUB_SHA: '',
}),
new EnvironmentPlugin({
- EN_SITE: '/infrance${path}',
- FR_SITE: '/mon-entreprise${path}',
+ EN_BASE_URL: 'http://localhost:8080/infrance',
+ FR_BASE_URL: 'http://localhost:8080/mon-entreprise',
}),
],
}
diff --git a/netlify.toml b/netlify.toml
index f2ce4d501..6df977b93 100644
--- a/netlify.toml
+++ b/netlify.toml
@@ -1,143 +1,57 @@
############
# Redirects following architectural changes
+# :SITE_ is a placeholder replaced before deploy (depends on the environment)
+
# FR | coronavirus -> simulateurs/chômage-partiel
[[redirects]]
- from="/coronavirus"
- to="/simulateurs/ch%C3%B4mage-partiel"
+ from=":SITE_FR/coronavirus"
+ to=":SITE_FR/simulateurs/ch%C3%B4mage-partiel"
status = 301
[[redirects]]
- from="/%C3%A9conomie-collaborative"
- to="/simulateurs/%C3%A9conomie-collaborative"
+ from=":SITE_FR/%C3%A9conomie-collaborative"
+ to=":SITE_FR/simulateurs/%C3%A9conomie-collaborative"
status = 301
-# EN | salaried -> salary
-[[redirects]]
- from="/simulators/salaried"
- to="/calcultors/salary"
- status = 301
-
-# EN | simulators -> calculators
-[[redirects]]
- from="/simulators/*"
- to="/calcultors/:splat"
- status = 301
-
-
# FR | salarié -> salaire-brut-net
[[redirects]]
- from="/simulateurs/salari%C3%A9"
- to="/simulateurs/salaire-brut-net"
+ from=":SITE_FR/simulateurs/salari%C3%A9"
+ to=":SITE_FR/simulateurs/salaire-brut-net"
status = 301
# FR | assimilé-salarié -> dirigeant-sasu
[[redirects]]
- from="/simulateurs/assimil%C3%A9-salari%C3%A9"
- to="/simulateurs/dirigeant-sasu"
+ from=":SITE_FR/simulateurs/assimil%C3%A9-salari%C3%A9"
+ to=":SITE_FR/simulateurs/dirigeant-sasu"
status = 301
# FR | s%C3%A9curit%C3%A9-sociale/auto-entrepreneur -> simulateurs/auto-entrepreneur
[[redirects]]
- from="/s%C3%A9curit%C3%A9-sociale/auto-entrepreneur"
- to="/simulateurs/auto-entrepreneur"
+ from=":SITE_FR/s%C3%A9curit%C3%A9-sociale/auto-entrepreneur"
+ to=":SITE_FR/simulateurs/auto-entrepreneur"
status = 301
# FR | sécurité-social/salarié -> simulateurs/salaire-brut-net
[[redirects]]
- from="/s%C3%A9curit%C3%A9-sociale/salari%C3%A9"
- to="/simulateurs/salaire-brut-net"
+ from=":SITE_FR/s%C3%A9curit%C3%A9-sociale/salari%C3%A9"
+ to=":SITE_FR/simulateurs/salaire-brut-net"
statys = 301
# FR | sécurité-social/salarié -> simulateurs/salaire-brut-net
[[redirects]]
- from="/s%C3%A9curit%C3%A9-sociale/salari%C3%A9"
- to="/simulateurs/salaire-brut-net"
+ from=":SITE_FR/s%C3%A9curit%C3%A9-sociale/salari%C3%A9"
+ to=":SITE_FR/simulateurs/salaire-brut-net"
status = 301
# SEO redirect
[[redirects]]
- from = "/documentation/contrat-salari%C3%A9/salaire/*"
- to = "/documentation/contrat-salari%C3%A9/r%C3%A9mun%C3%A9ration/:splat"
+ from = ":SITE_FR/documentation/contrat-salari%C3%A9/salaire/*"
+ to = ":SITE_FR/documentation/contrat-salari%C3%A9/r%C3%A9mun%C3%A9ration/:splat"
status = 301
-############
-# Redirects for single page app config & prerendering purpose
-
-# Mycompanyinfrance
-[[redirects]]
- from = "https://www.mycompanyinfrance.fr/*"
- to = "https://mycompanyinfrance.fr/:splat"
- status = 301
-
-[[redirects]]
- from = "https://www.mycompanyinfrance.com/*"
- to = "https://mycompanyinfrance.fr/:splat"
- status = 301
-
-[[redirects]]
- from = "https://mycompanyinfrance.com/*"
- to = "https://mycompanyinfrance.fr/:splat"
- status = 301
-
-[[redirects]]
- from = "https://mycompanyinfrance.fr/robots.txt"
- to = "/robots.infrance.txt"
- status = 200
-
-[[redirects]]
- from = "https://mycompanyinfrance.fr/sitemap.txt"
- to = "/sitemap.infrance.en.txt"
- status = 200
-
-[[redirects]]
- from = "https://mycompanyinfrance.fr"
- to = "/prerender/infrance/index.html"
- status = 200
-
-[[redirects]]
- from = "https://mycompanyinfrance.fr/calculators/salary"
- to = "/prerender/infrance/calculators/salary/index.html"
- status = 200
-
-[[redirects]]
- from = "https://mycompanyinfrance.fr/iframes/simulateur-embauche"
- to = "/prerender/infrance/iframes/simulateur-embauche/index.html"
- status = 200
-
-[[redirects]]
- from = "https://mycompanyinfrance.fr/*"
- to = "/infrance.html"
- status = 200
-
-[[redirects]]
- from = "/"
- query = {s = "m"}
- to = "/prerender/infrance/index.html"
- status = 200
-
-[[redirects]]
- from = "/*"
- query = {s = "m"}
- to = "/infrance.html"
- status = 200
-
-
-# Publicode
-[[redirects]]
- from = "https://publi.codes/*"
- to = "/publicodes.html"
- status = 200
-
-[[redirects]]
- from = "/*"
- query = {s = "p"}
- to = "/publicodes.html"
- status = 200
-
# Embauche redirection settings
-
[[redirects]]
from = "https://embauche.beta.gouv.fr/"
to = "https://mon-entreprise.fr/s%C3%A9curit%C3%A9-sociale/salari%C3%A9"
@@ -165,80 +79,138 @@
status = 301
+############
+# Redirects for single page app config & prerendering purpose
+
+
+# Publicode
+[[redirects]]
+ from = ":SITE_PUBLICODES/*"
+ to = "/publicodes.html"
+ status = 200
+
# Mon-entreprise.fr
[[redirects]]
- from = "https://mon-entreprise.fr/robots.txt"
+ from = ":SITE_FR/robots.txt"
to = "/robots.infrance.txt"
status = 200
[[redirects]]
- from = "https://mon-entreprise.fr/sitemap.txt"
+ from = ":SITE_FR/sitemap.txt"
to = "/sitemap.infrance.fr.txt"
status = 200
[[redirects]]
- from = "/"
+ from = ":SITE_FR"
to = "/prerender/mon-entreprise/index.html"
status = 200
[[redirects]]
- from = "/cr%C3%A9er"
+ from = ":SITE_FR/cr%C3%A9er"
to = "/prerender/mon-entreprise/cr%C3%A9er/index.html"
status = 200
[[redirects]]
- from = "/g%C3%A9rer"
+ from = ":SITE_FR/g%C3%A9rer"
to = "/prerender/mon-entreprise/g%C3%A9rer/index.html"
status = 200
[[redirects]]
- from = "/simulateurs/ch%C3%B4mage-partiel"
+ from = ":SITE_FR/simulateurs/ch%C3%B4mage-partiel"
to = "/prerender/mon-entreprise/simulateurs/ch%C3%B4mage-partiel/index.html"
status = 200
[[redirects]]
- from = "/simulateurs/salaire-brut-net"
+ from = ":SITE_FR/simulateurs/salaire-brut-net"
to = "/prerender/mon-entreprise/simulateurs/salaire-brut-net/index.html"
status = 200
[[redirects]]
- from = "/simulateurs/auto-entrepreneur"
+ from = ":SITE_FR/simulateurs/auto-entrepreneur"
to = "/prerender/mon-entreprise/simulateurs/auto-entrepreneur/index.html"
status = 200
[[redirects]]
- from = "/simulateurs/ind%C3%A9pendant"
+ from = ":SITE_FR/simulateurs/ind%C3%A9pendant"
to = "/prerender/mon-entreprise/simulateurs/ind%C3%A9pendant/index.html"
status = 200
[[redirects]]
- from = "/simulateurs/dirigeant-sasu"
+ from = ":SITE_FR/simulateurs/dirigeant-sasu"
to = "/prerender/mon-entreprise/simulateurs/dirigeant-sasu/index.html"
status = 200
[[redirects]]
- from = "/simulateurs/artiste-auteur"
+ from = ":SITE_FR/simulateurs/artiste-auteur"
to = "/prerender/mon-entreprise/simulateurs/artiste-auteur/index.html"
status = 200
[[redirects]]
- from = "/iframes/simulateur-embauche"
+ from = ":SITE_FR/iframes/simulateur-embauche"
to = "/prerender/mon-entreprise/iframes/simulateur-embauche/index.html"
status = 200
[[redirects]]
- from = "/iframes/simulateur-chomage-partiel"
+ from = ":SITE_FR/iframes/simulateur-chomage-partiel"
to = "/prerender/mon-entreprise/iframes/simulateur-chomage-partiel/index.html"
status = 200
[[redirects]]
- from = "/iframes/pamc"
+ from = ":SITE_FR/iframes/pamc"
to = "/prerender/mon-entreprise/iframes/pamc/index.html"
status = 200
-
[[redirects]]
- from = "/*"
+ from = ":SITE_FR/*"
to = "/mon-entreprise.html"
status = 200
+
+
+# Mycompanyinfrance
+
+[[redirects]]
+ from = "https://www.mycompanyinfrance.fr/*"
+ to = "https://mycompanyinfrance.fr/:splat"
+ status = 301
+
+[[redirects]]
+ from = "https://www.mycompanyinfrance.com/*"
+ to = "https://mycompanyinfrance.fr/:splat"
+ status = 301
+
+[[redirects]]
+ from = "https://mycompanyinfrance.com/*"
+ to = "https://mycompanyinfrance.fr/:splat"
+ status = 301
+
+
+[[redirects]]
+ from = ":SITE_EN/robots.txt"
+ to = "/robots.infrance.txt"
+ status = 200
+
+[[redirects]]
+ from = ":SITE_EN/sitemap.txt"
+ to = "/sitemap.infrance.en.txt"
+ status = 200
+
+[[redirects]]
+ from = ":SITE_EN"
+ to = "/prerender/infrance/index.html"
+ status = 200
+
+[[redirects]]
+ from = ":SITE_EN/calculators/salary"
+ to = "/prerender/infrance/calculators/salary/index.html"
+ status = 200
+
+[[redirects]]
+ from = ":SITE_EN/iframes/simulateur-embauche"
+ to = "/prerender/infrance/iframes/simulateur-embauche/index.html"
+ status = 200
+
+[[redirects]]
+ from = ":SITE_EN/*"
+ to = "/infrance.html"
+ status = 200