mirror of
https://github.com/bulwarkmail/webmail.git
synced 2026-10-31 16:13:15 +00:00
# Conflicts: # CONTRIBUTING.md # LICENSE # README.md # app/api/calendar-agenda/route.ts # app/api/wopi/files/[fileId]/contents/route.ts # app/api/wopi/launch/route.ts # components/calendar/calendar-app.tsx # components/calendar/calendar-day-view.tsx # components/calendar/calendar-month-view.tsx # components/calendar/calendar-week-view.tsx # components/calendar/event-modal.tsx # components/contacts/contact-detail.tsx # components/email/email-composer.tsx # components/email/email-list.tsx # components/files/file-browser.tsx # components/files/files-app.tsx # components/files/folder-tree-sidebar.tsx # components/filters/filter-rule-modal.tsx # components/mail/mail-app.tsx # hooks/use-mailbox-drop.ts # integration/run-tests.sh # lib/__tests__/calendar-agenda-route.test.ts # lib/__tests__/jmap-draft-lifecycle.test.ts # lib/__tests__/web-push.test.ts # lib/account-state-manager.ts # lib/jmap/client-interface.ts # lib/jmap/client.ts # lib/jmap/types.ts # lib/message-list-order.ts # lib/sieve/generator.ts # lib/sieve/parser.ts # lib/telemetry/payload.ts # lib/thread-utils.ts # lib/unified-mailbox.ts # lib/web-push.ts # lib/wopi/token.ts # locales/ar/common.json # locales/ca/common.json # locales/cs/common.json # locales/da/common.json # locales/de/common.json # locales/en/common.json # locales/es/common.json # locales/fa/common.json # locales/fr/common.json # locales/he/common.json # locales/hu/common.json # locales/it/common.json # locales/ja/common.json # locales/ko/common.json # locales/lv/common.json # locales/mn/common.json # locales/nb/common.json # locales/nl/common.json # locales/pl/common.json # locales/pt/common.json # locales/ro/common.json # locales/ru/common.json # locales/sk/common.json # locales/tr/common.json # locales/uk/common.json # locales/zh-TW/common.json # locales/zh/common.json # scripts/lite/lib.mjs # stores/__tests__/calendar-store-synthetic-ids.test.ts # stores/__tests__/email-store-shared-folder-keywords.test.ts # stores/__tests__/email-store-unified-actions.test.ts # stores/__tests__/file-store.test.ts # stores/email-store.ts # stores/file-store.ts # stores/message-list-tabs-store.ts
53 lines
2.2 KiB
Bash
Executable File
53 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Run the Playwright integration suite.
|
|
#
|
|
# Playwright's browser download host is often unreachable (and some host OSes
|
|
# aren't supported by the browser bundles), so the tests run inside the official
|
|
# Playwright container, which ships the browsers. The container uses host
|
|
# networking to reach the published stack ports (webmail :3000, Stalwart :8025).
|
|
#
|
|
# The docker stack itself is brought up here (on the host) and the in-container
|
|
# run is told to skip its own docker management via IT_NO_DOCKER=1.
|
|
#
|
|
# Usage:
|
|
# integration/run-tests.sh # whole suite
|
|
# integration/run-tests.sh 01-login # a single spec (grep on file name)
|
|
#
|
|
# Env:
|
|
# IT_VIDEO=on record a video.webm for every test (not just failures);
|
|
# also: off | retain-on-failure (default) | on-first-retry.
|
|
# e.g. IT_VIDEO=on integration/run-tests.sh 01-login
|
|
# STALWART_IMAGE=<image>
|
|
# the Stalwart image the test server is built on (default
|
|
# stalwartlabs/stalwart:v0.16), e.g. one built from the 1.0
|
|
# branch. Switching releases needs fresh volumes: run
|
|
# `docker compose down -v` in integration/ first (1.0 cannot
|
|
# open a 0.16 data directory).
|
|
# CI passed through, so a CI run gets the config's one retry.
|
|
set -euo pipefail
|
|
|
|
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
INTEGRATION_DIR="${REPO_ROOT}/integration"
|
|
PW_IMAGE="mcr.microsoft.com/playwright:v1.59.1-noble"
|
|
# Read by docker-compose.yml as the stalwart build argument.
|
|
export STALWART_IMAGE="${STALWART_IMAGE:-stalwartlabs/stalwart:v0.16}"
|
|
|
|
cd "${INTEGRATION_DIR}"
|
|
[ -f .env ] || cp .env.example .env
|
|
|
|
echo "== bringing up stack (Stalwart image ${STALWART_IMAGE}) =="
|
|
bash stalwart/prepare-stalwart-cli.sh
|
|
docker compose --env-file .env up -d --build --wait --wait-timeout 300
|
|
|
|
echo "== running Playwright in ${PW_IMAGE} =="
|
|
FILTER="${1:-}"
|
|
docker run --rm --network host \
|
|
--user "$(id -u):$(id -g)" \
|
|
-v "${REPO_ROOT}":/work -w /work \
|
|
-e IT_NO_DOCKER=1 \
|
|
-e HOME=/tmp \
|
|
-e IT_VIDEO="${IT_VIDEO:-}" \
|
|
-e CI="${CI:-}" \
|
|
"${PW_IMAGE}" \
|
|
npx playwright test -c playwright.integration.config.ts ${FILTER:+"$FILTER"}
|