Skip to content

Commit

Permalink
fix: deeper sentry next integration (#2406)
Browse files Browse the repository at this point in the history
* fix: deeper sentry next integration

* fix: sentry release

* fix: move to sentry2 + factorize + improve secu

* fix: sentry project name

* fix: up sentry + fixing sourcemaps

* fix: test sentry

* fix: sentry cors tunnel

* fix: sentry sourcemaps

* fix: sentry cors tunnel

* chore: wip

* chore: wip

* fix: disable tunnel

* fix: re-enable tunnel

* chore: wip

* chore: wip

* chore: wip

* chore: wip

* chore: wip

* chore: wip

* chore: wip

* chore: wip

* chore: wip

* chore: wip

* chore: wip

* chore: wip

* chore: wip

* chore: wip

* chore: wip

* chore: wip

* chore: wip

* chore: wip

* chore: wip

* chore: wip

* chore: wip

* chore: wip

* chore: wip

* chore: wip

* fix(replay): wip

* chore: test server-side error

* chore: test server-side error

* chore: test server-side error

* chore: test server-side error

* chore: clean debug logs

* fix: cheat sentry buttons

* fix: electron unkown root error in e2e tests

* fix: electron bugs

* Revert "fix: electron bugs"

This reverts commit a4a3f3d.

* Revert "fix: electron unkown root error in e2e tests"

This reverts commit dcb44f8.

* fix(cypress): electron bugs

* Reapply "fix: electron unkown root error in e2e tests"

This reverts commit 597fe55.

* Reapply "fix: electron bugs"

This reverts commit 5857e67.

* fix(cypress): bugs

* fix(cypress): bugs

* fix(cypress): bugs

* fix: disable sentry in e2e tests
  • Loading branch information
devthejo authored Feb 11, 2025
1 parent a0cb1ae commit 76a4331
Show file tree
Hide file tree
Showing 34 changed files with 2,690 additions and 384 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/review-auto.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ jobs:
echo "$SITE_URL"
- name: Cypress run
uses: cypress-io/github-action@v5
env:
CYPRESS: "true"
with:
install: false
working-directory: ./packages/app
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/review.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ jobs:
echo "$SITE_URL"
- name: Cypress run
uses: cypress-io/github-action@v5
env:
CYPRESS: "true"
with:
install: false
working-directory: ./packages/app
Expand Down
1 change: 1 addition & 0 deletions .kontinuous/env/dev/templates/sentry.sealed-secret.yaml
17 changes: 17 additions & 0 deletions .kontinuous/env/preprod/templates/sentry.sealed-secret.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
annotations:
sealedsecrets.bitnami.com/cluster-wide: 'true'
name: sentry
spec:
encryptedData:
APP_SENTRY_DSN: AgBT64rndzgsE8FLNoGEkFBMeGbYIv0e7bDq13EEWRhP3AOpMTC9oLKMxzWzyU600x/n+Ofw8mABjvPSUHRucTL7lhOEiQqHRrvx9fZqpQRk2pRc+ZBNcD3zhEq2wFreukPXAnecg7JnqtyffJnUrS7K7D58AmDCvs6JFRmJoLIWutfcXTSXdza7J8p38nCJ7cFbiAo7ApleybqPHc1z2GZWDi3//Hu/JcEY5ZeOtJhzJqqKYjUQ23DXyJQMG+ELWZb871pEKVov4EfDncbfdaGc802PKwFAzQ/duiZbnAjRq2b8/AaqZNSxSGpQpDF2AfvVTHBBgyu4R1pJhBTs85ncKj5dwcGOokCoVv9iOY7OlgH0G8dLkjAN7qDRNVb2XQNldDFmGW8EITz3KF+kEs3CbaUWHcCDoSNnMhLaz9AMI16jqBpC04TJxj/jUYfNiMrz5VNiTuago0IPXiowvwBkwNyPBJV+VwmPpbxJmypyd5T5QLswJyJnbGMtc2cuKVXTpci+BmjTbiWmT2wsDEmCNbRzFcOyFkzS5vt/q+pc4rPRzP7pJ503NMsrZhD4hG2H2+j0x9rcb7bGfFITCS+xJcV+SBSCYJqgAN94qm+lCfCA3Azgw9puxLyN94EaCKkNElDXFF6grD3WYlUVzFqT5jTYYVs+NxrmjqSg1BotJ/ue/bR26XLMAuLgzbg0WSzMoE4/FcT8JLHDTNf4iw9FhckQZb1IXuUgnk7r/LSOXDcJSc9d2BY63pTz9CUn1MiHcOdadaN9/9GwS0oVYlzKaqgd6fRFM5o/sE4=
API_SENTRY_DSN: AgAigIj04X/xVtCJZCRAk6n+VZ+ZwQhNpuNGOS8F7Jw0X+sbKkn5kbOkCFzFkxeqchhEKn0kbzkEwbZlqidUNneeElZW2+oDisjks4ucE9B8YJmYZEviwmkXpbl8/B4Wew9YyJVyDx2Z3KcVhquihZHJoKkjUKhBzceUtR4CUzKtp21ISHSQ6lA/1DjYOUQOeQM+zJhWTJtAd/7d9UA70QvpA0xFJeFZRmMp1O6J7DP8FC0ed3li9nEuTFoUGPG7fKuJpay007FUOkq/mQ5lqsb0VEc+O3YhpDJXOKzYYZJJRECGAFg9hdZG6DKLNLZn/hmm973YwMhx8Xq1FjsSbqrEIpyoWJGen4wYpoAvEvbXxXOEz0kTr+ywESKOw7dN9AKxlMyvMeTlqUht2dVasvg0qALUZ56NWYvXS3iwMu9x9rcnsWjeE0eTw9ExCqwX3dSY/R+6w6Ic03OT4jGS2cDJeCXUPHq46SMUlnVXalSgU6fNUGXxhtcwKlsn4apQVtD3BgN12r2KSLsuK2u3saxR9gkD8ngxA0FyjsUO79dSSEN2h/TvykPUHBKVfFO9Gc5N2ua+vcVu46S3wg9ALml4XZW2+0uuKlwbrkOp8EhruP9n5Dbga1GYdeygTVTPFs+sBI7ZYDjsBJFdl8TIZmvc0iXx5XwnDWagTtxc3v7CwsHveoJYcObXLmGdZX/CI4W7xjLW7rc/7hMqjGePtlhXj7Cf8uhQA7V5/vlMOq0p7uNq7yaG2LFz4R2BIq6R8DLEx5wyAVNcAR4vprjW9qQRy6/lvYuZOC0DQC8=
SENTRY_AUTH_TOKEN: AgBnsd3UP1D1Y7Js8pK8lQPp7ZBooOokpY93hTDHpazNAKiavzSXsSRDXF6FWBEbRj1p6omp1CBrnbnNKT6wHRZ8HitMPLoHUcDQHSmtqDOb7yOaTT2X4Vm5Qs9xHiyCTp1lDjNHvLlxWX3q6Q6paKatpnUQaao5Ni0IIbekUz1BeDGTZu8HicY1/vToPvdfL5hALo7z7FvKqWUGBRHZeiIw/4CeSKodSvViGpXE7Rhgd/HepGa7Xk0nINQTOtapC8texzradar5+5X3l9PUFWcOvzzwi501EfqLeOpFGBDtv5jt24Nx6C0FNuGhFC3kvdadvN5nIc9ifefPo9dtylwqFGPsQHsYwqcGGKGciKHbS+h5vv1ylAr/7CC8/VTKiyUx9I0zto/bo5Y+vbwULQVVKGP40EiqwdtKB907TgiWt+pw8GxsE7JOyRf62fwUG/0ZxAF0W08SOeFKwb9QBx7UT8ygieWhMvztEm9l0ai7RXMawcqYiFzdNk1xYJSP5IBbR0UMZyG90Nfh0/U9/JkZtS5d52hExowCAUOAW+dxvjQ/Umcj1bn5ieRQAJKJseuKjcB52siwrBK7LgFSVlw54JaRz0sKLCN9FIezRHR3tlyPCErXq+gMPffl/XFI6WH5JIkr+brX9TXSjZwlh/unj1ZEEKxTDi93jxyOaseyRDidmBkK0ADu6DDuy9ESXBqzDV/m9nJ1c2iChQjVgcVzvPwwKNoqr+ONzzXF14xudvIopPLqT/AqW/Mt6dLmFER1QH2ujoygUR2DCifMwf6vsAtj3e3MaIpFhNUKC8lFVaKM5QK+Q+2TvrmPe76Zm1KjlUhRS95DZcR+m/a/Ahp9D2XJJXzPZSCCtgVSJJ+05AisxfAIhvK1Z/XhPe1Wkf2mMNCfYrzuIXhzG7AgxDIFlwKqXIzLVN9Zf0eaIQzde+MT0Pue1pBy6KaqB+laHjISAGOQIX0Qoqg6wrmUc4XOsUeB8ogSRorz83qKLvDvsSrG+fzTvslO4AGbBts1clFPt/C74Ifs
template:
metadata:
annotations:
sealedsecrets.bitnami.com/cluster-wide: 'true'
name: sentry
type: Opaque
18 changes: 18 additions & 0 deletions .kontinuous/env/prod/templates/sentry.sealed-secret.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
annotations:
sealedsecrets.bitnami.com/namespace-wide: 'true'
name: sentry
namespace: egapro
spec:
encryptedData:
APP_SENTRY_DSN: AgADUFlo2fKI9dyEgTk4IrmzIc4gYimw1c9P6SJOBUcyycTAdWJeQxqvsJh8hFC/1LdGDAjnb1pVsjdG/EnUE+kSKwhZslV7tXNv+eD7kbv5od+xpw4l6Wely5h464w68WQmhv7LIm9XwMBMV17VfumUHrnc6rTVIdq4/BeJO03GF37b17lGUzsXA92j1tpLZtd0S8s14S9DGnLhFw6Ya0DrgfTmvIfC3CLgUu5oG7ps29shsk4MfQ7PYDCb1kFkbvMxajvmLc2rKIF1uV9rkK6MHrN8mqtaTJU9YuPsRvszste8q3j6dcOlvBok61BOiZzyJjLDfTRpZ5Ln5sNfKjahDFHFgpux1dW1mQSygOfCx6105myJ3TMTCsP/+W6QBUgnjlzF8LtZnlm28ex5zZt+DcRVgYEXY5p9Uql/0wRXR5Yq/N4geGTvxteRwdLLsfmYThZK7uGCy/8pOZDzwSmvpgG3GGdEO21y9904UNfy1ZtjYXkxaVlUlk5oHDvKMfj4hEYr9lAiPygfslOVqiyQ1fjv63Uis6YIkByniG3D3+7HRq7pqYgpwZrDK+dsWD125n6B1v44Rb7eDkH3WLJr7VN461fr7uFM9NeG0WgFk1ldtQkIDZxUyD/ye6S4J4eaWkc8N4LU6M58fnzIhcRjeMWe0Kj8gC8trQUpJlcnAXJxzSuWNalVIoSwHObb7lv2lYiZRp46hK8imVebxUGBV08sdfKusUUIxg+eur5f8fqM0iyxKuHEc0HzELUwX5kuWpwTWtTWby4zYskN8zCtB5CEp3pB3suw9Kk=
API_SENTRY_DSN: AgCRGSxKsWwaHO0j0EQnGGwJBJknPW5meEY+hEWcmgW6ECTtpNMgFgdlPJQNisfR81NVE8OoYXd6OtPU66xDVyslX8sboZIsDzgA+Edmw4uKaFDkWpejRr/paVQAZiZidlHEKlCVmxcUvtyZf8PXfE3NcEAmqmvGrtzgyTAW0oXV8D4euWS5FYGy9iv1v8vKkaPJp7KXjJOsxi0gjJBiFR3gZOqm+Iu3czE9xgUJ8enjO93YIVB5Mow+74IN9J6m5WNeVqxTMgiGPz9ov5boEKoLnIRdeoYnm7onBuoXLu1biBWHrOiGFTCtikJsxNMsZf/Zqz3iE9lAq7nEkbHVOtmJ74uGgByccZ8dUvj3tApmZrpeloQZIvHQaEfDtKXdt5Ip7/SC1a5dg1Yf48M5eqpvk+YOe0ZEEZGcl+e4hoK5kBHbk9s1gBBfx2CIvL7zV8nJKhh+sxGR9freIvP4cuMaZgBPVCsVUd9ZbCGYDZ99S+XeIOKDKoE+HLpimKT/vKYxhbRrwBQz9SuEhsHszPnQBa63xRSu/ARpnD54QN7iY5j4uc1bwuyVKUsoVD1vTqESHLqJunc8qbJ6izAp1QQZrRkq6Cs7B6GsB6dgoIk2t6zKKTvxFTgZMaJ2cn7Y/AVFnZEI+iUZv4Z60ClpTFmr/4vp1lANzIkhh+xxSHbFF+uMQx2TOvx7kCivHr2qIHFVOaU3moWdvIffNLRYJhB3VfTPZS8tupcLiu7xxTmpOe6TLg86ROSuwqrpNOOzs2r9AOhURPnIY5L23FIMEn7JRqmV1M6CzEBX3zU=
SENTRY_AUTH_TOKEN: AgCTW/65WzXOMH0bO3DKNgXCDjbR3M+545Onuj42GV6A3t3ipYdj8ljBzPqDu4zYDEGwCji2bBzMqiQq3U08CBbEIJ+C9S0jecIgfhKfSkHPhfU8jX+fwH79sJhm6V+52gu9T9ZhaJrMWHdGC//ngWl+Qx4/FuKuR1DmCy8sfT52GscDpWABE25Os8wZQMPFa3brHj0kjN7CbR6wDa8yyC86G+FKTvF9t7Rx+sZ8Up75BllrcjgLpIpW8X02TEIn0S2gKdHRjxUr23Z4qcM8bWEdo7Lutd4bTVH5j03QjwjOtX7hYUFx9Kb0/fb+gc3U6/9G0iG1UgRwfphMC1bYe1Q6DF93nuwlCK/9lsZJffwaKEn+vehEz1f/Lo4MYkvpZcTC5LsQ2YPhSOsTAUY+qNrhGOhuBD7VfSvlXztOi7YcRMueozqeV3zM40InCxhcdGDcMYt8VD9hJzFzLYA5NMFbQXRKneC0FPzx6w9ueJm5GcxKl7py6v2DDODgBRbp2X01lcVGIawgTDUiPRnFB2LmVwaknZlcaNGZwKhgUEW5o4g2gDyTf93n4FUL6JlmSK20qJeWIeFNgNQGVrnlNfftJ/KhFfoqXS9sSQ9eqYg7CO9P69fkS3kPlo2VlB/unFYuGnHQxIKJqVNzpweiA3IwuKMrTVuXRWxO3GCF3uAaiZa5YcLnhWc3R8sF6c+9IzajOUPTP1TiDONIqbOPXo3e2ADiousKmztkzjwbQuvcfxA5IbQZIiQTKII2JnmlmtgaTNyr/6hvTNv3YHrJRIi+8Yvasih3ABrrzvK4Zlu8GCNOYBzvdTb2PCWgKN6Oy81gOTl1sVQq6S026iVxnK/PUqT6yFlqpFpg4GPHIkXGPaSzTmKHvMjAjld65XFNq8r4mwEgYKVc0JbTcNPpKgJ5rc3i/g7d4W3NVXAygZHS0xcs3o9JLzb5iKf4mk6oTQ2Q0/TkLa0kq+1/HQY9kl6qR9fZ8F9X7xt4SuYSEJKD7yfU63z8NVeY8ihsnOmcXwhJakg9beaC
template:
metadata:
annotations:
sealedsecrets.bitnami.com/namespace-wide: 'true'
name: sentry
type: Opaque
15 changes: 7 additions & 8 deletions .kontinuous/env/prod/values.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
global:
host: egapro.travail.gouv.fr
sentryFront: "https://[email protected]/49"

api:
autoscale:
Expand All @@ -13,7 +12,13 @@ api:
cpu: 2
memory: 2G
vars:
EGAPRO_SENTRY_DSN: "https://[email protected]/22"
EGAPRO_SENTRY_DSN: "{{ .Values.global.sentry.apiDSN }}"
env:
- name: EGAPRO_SENTRY_DSN
valueFrom:
secretKeyRef:
name: sentry
key: API_SENTRY_DSN
envFrom:
- secretRef:
name: "{{ .Values.global.pgSecretName }}"
Expand Down Expand Up @@ -55,9 +60,3 @@ nginx:
autoscale:
enabled: true

jobs:
runs:
build-app:
with:
buildArgs:
REACT_APP_SENTRY_DSN: "{{ .Values.global.sentryFront }}"
46 changes: 40 additions & 6 deletions .kontinuous/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,17 @@ app:
name: "moncomptepro"
- secretRef:
name: github-oauth
env:
- name: SENTRY_AUTH_TOKEN
valueFrom:
secretKeyRef:
name: sentry
key: SENTRY_AUTH_TOKEN
- name: NEXT_PUBLIC_SENTRY_DSN
valueFrom:
secretKeyRef:
name: sentry
key: APP_SENTRY_DSN
vars:
POSTGRES_HOST: "$(PGHOST)"
POSTGRES_DB: "$(PGDATABASE)"
Expand All @@ -52,8 +63,7 @@ app:
POSTGRES_PASSWORD: "$(PGPASSWORD)"
POSTGRES_SSLMODE: "$(PGSSLMODE)"
SECURITY_JWT_SECRET: "$(EGAPRO_SECRET)"
SENTRY_DSN: "https://[email protected]/22"
EGAPRO_ENV: "{{ .Values.global.env }}"
NEXT_PUBLIC_EGAPRO_ENV: "{{ .Values.global.env }}"
NEXTAUTH_URL: "https://{{ .Values.global.host }}/api/auth"

nginx:
Expand All @@ -65,6 +75,7 @@ nginx:
paths:
- /
- /api/auth(/|$)(.*)
- /api/monitoring(/|$)(.*)
- /index-egapro/recherche(/|$)(.*)
annotations:
nginx.ingress.kubernetes.io/configuration-snippet: *headers
Expand Down Expand Up @@ -108,14 +119,19 @@ api:
name: "staff"
- secretRef:
name: "egapro-secret"
env:
- name: EGAPRO_SENTRY_DSN
valueFrom:
secretKeyRef:
name: sentry
key: API_SENTRY_DSN
vars:
EGAPRO_DBHOST: "$(PGHOST)"
EGAPRO_DBNAME: "$(PGDATABASE)"
EGAPRO_DBPORT: "$(PGPORT)"
EGAPRO_DBUSER: "$(PGUSER)"
EGAPRO_DBPASS: "$(PGPASSWORD)"
EGAPRO_DBSSL: "$(PGSSLMODE)"
EGAPRO_SENTRY_DSN: "https://[email protected]/22"

pg:
~chart: pg
Expand Down Expand Up @@ -181,7 +197,10 @@ files:
- name: EGAPRO_DBSSL
value: "$(PGSSLMODE)"
- name: EGAPRO_SENTRY_DSN
value: "https://[email protected]/22"
valueFrom:
secretKeyRef:
name: sentry
key: API_SENTRY_DSN
- name: SCHEDULER
value: "True"
volumeMounts:
Expand Down Expand Up @@ -217,6 +236,12 @@ jobs:
use: build
memoryLimit: 14Gi
memoryRequest: 2Gi
env:
- name: NEXT_PUBLIC_SENTRY_DSN
valueFrom:
secretKeyRef:
name: sentry
key: APP_SENTRY_DSN
with:
imagePackage: app
dockerfile: packages/app/Dockerfile
Expand All @@ -225,7 +250,16 @@ jobs:
NEXT_PUBLIC_API_V2_URL: "https://{{ .Values.global.host }}/apiv2"
NEXTAUTH_URL: "https://{{ .Values.global.host }}/api/auth"
NEXT_PUBLIC_GITHUB_SHA: "{{ $.Values.global.shortSha }}"
EGAPRO_ENV: "{{ .Values.global.env }}"
NEXT_PUBLIC_EGAPRO_ENV: "{{ .Values.global.env }}"
NEXT_PUBLIC_SENTRY_DSN: "$NEXT_PUBLIC_SENTRY_DSN"
SENTRY_ORG: incubateur
SENTRY_PROJECT: egapro-app
SENTRY_URL: https://sentry2.fabrique.social.gouv.fr
SENTRY_RELEASE: "{{ .Values.global.isProd | ternary .Values.global.imageTag (.Values.global.isPreProd | ternary .Values.global.shortSha .Values.global.branchSlug32) }}"
secrets:
sentry_auth_token:
secretName: sentry
secretKey: SENTRY_AUTH_TOKEN

build-api:
use: build
Expand All @@ -243,4 +277,4 @@ jobs:
use: build
with:
imagePackage: files
context: packages/files
context: packages/files
2 changes: 1 addition & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
}
],
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
"source.fixAll.eslint": "explicit"
},
"[typescript]": {
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
Expand Down
4 changes: 0 additions & 4 deletions packages/app/.env.development
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,4 @@ SECURITY_GITHUB_CLIENT_ID=
SECURITY_GITHUB_CLIENT_SECRET=
SECURITY_CHARON_URL="https://egapro-charon.ovh.fabrique.social.gouv.fr"

## Sentry
# old EGAPRO_SENTRY_DSN
SENTRY_DSN=""
# old EGAPRO_FLAVOUR
EMAIL_LOGIN=true
4 changes: 0 additions & 4 deletions packages/app/.env.production
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,3 @@ SECURITY_GITHUB_CLIENT_ID=
SECURITY_GITHUB_CLIENT_SECRET=
SECURITY_CHARON_URL="https://egapro-charon.ovh.fabrique.social.gouv.fr"

## Sentry
# old EGAPRO_SENTRY_DSN
SENTRY_DSN=""
# old EGAPRO_FLAVOUR
5 changes: 0 additions & 5 deletions packages/app/.env.test
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,3 @@ SECURITY_JWT_SECRET="sikretfordevonly"
SECURITY_JWT_ALGORITHM="HS256"
# old EGAPRO_ALLOWED_IPS
SECURITY_ALLOWED_IPS=""

## Sentry
# old EGAPRO_SENTRY_DSN
SENTRY_DSN=""
# old EGAPRO_FLAVOUR
2 changes: 1 addition & 1 deletion packages/app/.eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ const config = {
extends: [
"eslint:recommended",
"next/core-web-vitals",
// default rules for import
"plugin:import/recommended",
"plugin:import/typescript",
// include prettier config which avoid conflict
"prettier",
// disable conflicting rules with plugin (not config!)
Expand Down
53 changes: 43 additions & 10 deletions packages/app/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,49 @@ ARG NODE_VERSION=20-alpine
# Builder
FROM node:$NODE_VERSION AS builder


WORKDIR /app

COPY yarn.lock .yarnrc.yml ./
COPY .yarn .yarn
RUN yarn fetch workspaces focus app

COPY packages/app/ ./packages/app/

ENV NODE_OPTIONS="--max-old-space-size=8192"

ARG NEXT_PUBLIC_API_URL
ENV NEXT_PUBLIC_API_URL $NEXT_PUBLIC_API_URL
ARG NEXT_PUBLIC_API_V2_URL
ENV NEXT_PUBLIC_API_V2_URL $NEXT_PUBLIC_API_V2_URL
ARG NEXT_PUBLIC_GITHUB_SHA
ENV NEXT_PUBLIC_GITHUB_SHA $NEXT_PUBLIC_GITHUB_SHA
ARG EGAPRO_ENV
ENV EGAPRO_ENV $EGAPRO_ENV
ARG NEXT_PUBLIC_EGAPRO_ENV
ENV NEXT_PUBLIC_EGAPRO_ENV $NEXT_PUBLIC_EGAPRO_ENV
ARG NEXTAUTH_URL
ENV NEXTAUTH_URL $NEXTAUTH_URL

WORKDIR /app
ARG SENTRY_URL
ARG SENTRY_ORG
ARG SENTRY_PROJECT
ARG SENTRY_RELEASE
ARG NEXT_PUBLIC_SENTRY_DSN
ENV SENTRY_URL=$SENTRY_URL
ENV SENTRY_ORG=$SENTRY_ORG
ENV SENTRY_PROJECT=$SENTRY_PROJECT
ENV NEXT_PUBLIC_SENTRY_DSN=$NEXT_PUBLIC_SENTRY_DSN
ENV SENTRY_RELEASE=$SENTRY_RELEASE

COPY yarn.lock .yarnrc.yml ./
COPY .yarn .yarn
RUN yarn fetch workspaces focus app
# Enable source map generation during build
ENV GENERATE_SOURCEMAP=true \
NODE_ENV=production

COPY packages/app/ ./packages/app/

ENV NODE_OPTIONS="--max-old-space-size=8192"
# Clean output directory and build with source maps
RUN --mount=type=secret,id=sentry_auth_token export SENTRY_AUTH_TOKEN=$(cat /run/secrets/sentry_auth_token); \
export NODE_OPTIONS="--max-old-space-size=8192"; \
export GENERATE_SOURCEMAP=true; \
yarn workspace app build

RUN yarn workspace app build
RUN yarn workspaces focus app --production && yarn cache clean
RUN mkdir -p ./packages/app/node_modules

Expand All @@ -43,8 +64,20 @@ COPY --from=builder /app/packages/app/.env.development .
COPY --from=builder /app/packages/app/public ./public
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/packages/app/node_modules ./packages/app/node_modules
COPY --from=builder /app/packages/app/sentry.*.ts .
COPY --from=builder --chown=node:node /app/packages/app/.next ./.next

USER 1000

CMD ["node_modules/.bin/next", "start"]

ARG SENTRY_URL
ARG SENTRY_ORG
ARG SENTRY_PROJECT
ARG SENTRY_RELEASE
ARG NEXT_PUBLIC_SENTRY_DSN
ENV SENTRY_URL=$SENTRY_URL
ENV SENTRY_ORG=$SENTRY_ORG
ENV SENTRY_PROJECT=$SENTRY_PROJECT
ENV NEXT_PUBLIC_SENTRY_DSN=$NEXT_PUBLIC_SENTRY_DSN
ENV SENTRY_RELEASE=$SENTRY_RELEASE
8 changes: 8 additions & 0 deletions packages/app/cypress.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,13 @@ export default defineConfig({
setupNodeEvents(_on, _config) {
// implement node event listeners here
},
experimentalRunAllSpecs: true,
experimentalWebKitSupport: true,
defaultCommandTimeout: 30000,
pageLoadTimeout: 100000,
responseTimeout: 30000,
requestTimeout: 30000,
viewportWidth: 1600,
viewportHeight: 1400,
},
});
41 changes: 34 additions & 7 deletions packages/app/cypress/e2e/homepage.cy.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,40 @@
describe("Homepage", () => {
beforeEach(() => {
// Clear any cached state
cy.clearLocalStorage();
cy.clearCookies();
});

it("Affiche les informations élémentaires", () => {
cy.visit("/");
cy.contains("Bienvenue sur Egapro");
cy.contains(".fr-btn", "Calculer - Déclarer mon Index");
cy.contains(".fr-btn", "Consulter l'Index");
cy.contains(".fr-btn", "Déclarer mes Écarts");
cy.contains(".fr-btn", "Consulter les Écarts");
cy.contains(".fr-btn", "Se connecter");
// Intercept page and data requests
cy.intercept("GET", "/").as("pageLoad");
cy.intercept("GET", "/_next/data/**").as("nextData");
cy.intercept("GET", "/api/**").as("apiData");

cy.visit("/", { timeout: 100000 });
cy.wait("@pageLoad");

// Wait for the page to be interactive
cy.get("body", { timeout: 100000 }).should("be.visible");

// Wait for main content with retry strategy
cy.get('[id="content"]', { timeout: 100000 }).should($el => {
expect($el).to.exist;
expect($el).to.be.visible;

// Check all required elements within main content
const content = $el[0].textContent;
expect(content).to.include("Bienvenue sur Egapro");
expect(content).to.include("Calculer - Déclarer mon Index");
expect(content).to.include("Consulter l'Index");
expect(content).to.include("Déclarer mes Écarts");
expect(content).to.include("Consulter les Écarts");
});

// Check login button with retry
cy.contains(".fr-btn", "Se connecter", { timeout: 100000 }).should("be.visible");
});

it.skip("Affiche la popup RGPD", () => {
cy.visit("/");
cy.contains("À propos des cookies");
Expand Down
Loading

0 comments on commit 76a4331

Please sign in to comment.