ci: job E2E Playwright dans le pipeline (pile jetable via pont volume)
Some checks failed
Some checks failed
This commit is contained in:
parent
68a2690b98
commit
9adcab134e
1 changed files with 36 additions and 1 deletions
|
|
@ -170,6 +170,41 @@ jobs:
|
||||||
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm ci
|
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm ci
|
||||||
npm run test:js
|
npm run test:js
|
||||||
|
|
||||||
|
e2e:
|
||||||
|
# Tests navigateur Playwright (parcours borne + admin) sur une pile JETABLE.
|
||||||
|
# tests/e2e/run.sh monte la pile via docker compose et joue les specs (inchange).
|
||||||
|
# Specificite CI : act_runner range le workspace du job dans un volume dont le chemin
|
||||||
|
# n'est pas valide cote demon hote, donc les bind-mounts ./src ./db du compose ne s'y
|
||||||
|
# resolvent pas. Parade : copier le repo dans un volume nomme dont le mountpoint EST un
|
||||||
|
# chemin hote valide, puis lancer run.sh depuis un wrapper monte sur ce mountpoint.
|
||||||
|
# La socket docker est propagee au job (verifie) ; code applicatif et Dockerfiles intacts.
|
||||||
|
runs-on: docker
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Playwright (pile jetable, parcours borne + admin)
|
||||||
|
run: |
|
||||||
|
set -e
|
||||||
|
curl -fsSL https://download.docker.com/linux/static/stable/x86_64/docker-27.3.1.tgz -o /tmp/d.tgz
|
||||||
|
tar -xzf /tmp/d.tgz -C /usr/local/bin --strip-components=1 docker/docker
|
||||||
|
VOL="wakdo_e2e_${GITHUB_SHA:-run}"
|
||||||
|
docker volume rm "$VOL" >/dev/null 2>&1 || true
|
||||||
|
docker volume create "$VOL" >/dev/null
|
||||||
|
tar -C "$GITHUB_WORKSPACE" \
|
||||||
|
--exclude=./.git --exclude=./node_modules --exclude=./var/backups \
|
||||||
|
--exclude=./playwright-report --exclude=./test-results \
|
||||||
|
-cf - . | docker run --rm -i -v "$VOL":/dst alpine sh -c 'cd /dst && tar xf -'
|
||||||
|
HOSTSRC="$(docker volume inspect "$VOL" -f '{{.Mountpoint}}')"
|
||||||
|
echo "workspace -> volume $VOL @ $HOSTSRC"
|
||||||
|
set +e
|
||||||
|
docker run --rm \
|
||||||
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||||
|
-v "$VOL":"$HOSTSRC" \
|
||||||
|
-w "$HOSTSRC" \
|
||||||
|
docker:27-cli sh -c 'apk add --no-cache bash perl >/dev/null 2>&1 && bash tests/e2e/run.sh'
|
||||||
|
RC=$?
|
||||||
|
docker volume rm "$VOL" >/dev/null 2>&1 || true
|
||||||
|
exit $RC
|
||||||
|
|
||||||
auto-merge:
|
auto-merge:
|
||||||
# Fusion automatique OPT-IN : poser le label `auto-merge` sur la PR.
|
# Fusion automatique OPT-IN : poser le label `auto-merge` sur la PR.
|
||||||
# Ne s'execute que si tous les checks requis passent (needs).
|
# Ne s'execute que si tous les checks requis passent (needs).
|
||||||
|
|
@ -177,7 +212,7 @@ jobs:
|
||||||
# `if:` — l'expression contains(github.event.pull_request.labels.*.name, ...)
|
# `if:` — l'expression contains(github.event.pull_request.labels.*.name, ...)
|
||||||
# de Forgejo n'est pas fiable (elle s'evalue a vrai meme sans label, ce qui
|
# de Forgejo n'est pas fiable (elle s'evalue a vrai meme sans label, ce qui
|
||||||
# fusionnait toute PR verte). La verification shell sur l'API est le vrai gate.
|
# fusionnait toute PR verte). La verification shell sur l'API est le vrai gate.
|
||||||
needs: [secret-scan, php-lint, static-tests, js-tests]
|
needs: [secret-scan, php-lint, static-tests, js-tests, e2e]
|
||||||
if: github.event_name == 'pull_request'
|
if: github.event_name == 'pull_request'
|
||||||
runs-on: docker
|
runs-on: docker
|
||||||
steps:
|
steps:
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue