diff --git a/.github/Dockerfile.test-web b/.github/Dockerfile.test-web new file mode 100644 index 00000000..c1ea0673 --- /dev/null +++ b/.github/Dockerfile.test-web @@ -0,0 +1,18 @@ +FROM node:20 +WORKDIR /app + +ARG BROWSER + +RUN corepack enable && \ + corepack prepare pnpm@8.7.1 --activate + +COPY ../ /app/ + +RUN pnpm install --frozen-lockfile && \ + pnpm -C packages/tl run gen-code && \ + pnpm exec playwright install --with-deps $BROWSER + +ENV BROWSER="$BROWSER" + +ENTRYPOINT [ "pnpm", "run", "test:browser" ] +CMD [ "--browser.name=$BROWSER" ] \ No newline at end of file diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index e88ccc15..68f565ea 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -65,9 +65,8 @@ jobs: browser: [chromium, firefox] steps: - uses: actions/checkout@v4 - - uses: ./.github/actions/init - - name: 'Initialize browser' - run: pnpm exec playwright install --with-deps ${{ matrix.browser }} + - name: 'Build Docker image' + run: docker build . -f .github/Dockerfile.test-web --build-arg BROWSER=${{ matrix.browser }} -t mtcute/test-web - name: 'Run tests' # i wish we didn't have to do this, but vitest in browser is very flaky # see: https://github.com/vitest-dev/vitest/issues/4173 @@ -75,7 +74,7 @@ jobs: with: max_attempts: 3 timeout_minutes: 30 - command: pnpm run test:browser --browser.name=${{ matrix.browser }} + command: docker run -e CI=1 mtcute/test-web e2e: runs-on: ubuntu-latest