mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-27 07:52:24 +00:00
Add Dockerfile and script for containerized Playwright testing
- Add `Dockerfile` based on `mcr.microsoft.com/playwright:v1.57.0-jammy`. - Add `scripts/run-playwright-docker.sh` to build and run the container with volume mounts. - Add `.dockerignore` to prevent host `node_modules` from corrupting the build. - Update `README.md` with usage instructions.
This commit is contained in:
1 parent
cef2de32e4
commit
a9cef919a8
4 files changed
+71
No files matched your search
@@ -0,0 +1,7 @@
|
||||
node_modules
|
||||
.git
|
||||
.gitignore
|
||||
artifacts
|
||||
Dockerfile
|
||||
scripts
|
||||
test-results
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
# Base image matching the Playwright version in package.json
|
||||
FROM mcr.microsoft.com/playwright:v1.57.0-jammy
|
||||
|
||||
# Set working directory
|
||||
WORKDIR /app
|
||||
|
||||
# Copy package files
|
||||
COPY package.json package-lock.json ./
|
||||
|
||||
# Install dependencies
|
||||
# We use npm ci for a clean, deterministic install
|
||||
RUN npm ci
|
||||
|
||||
# Copy the rest of the application source code
|
||||
COPY . .
|
||||
|
||||
# Default command
|
||||
CMD ["npm", "run", "test:visual"]
|
||||
@@ -139,6 +139,23 @@ http://localhost:8000
|
||||
- **Run DM integration tests**: `npm run test:dm:integration`
|
||||
- **Run headless E2E tests**: `npm run test:e2e`
|
||||
|
||||
### Running Tests in Docker
|
||||
|
||||
To run Playwright tests in a consistent containerized environment, use the provided Docker script:
|
||||
|
||||
```bash
|
||||
./scripts/run-playwright-docker.sh [command]
|
||||
```
|
||||
|
||||
- **Default**: Runs `npm run test:visual`.
|
||||
- **Custom command**: Pass any command as an argument, e.g., `./scripts/run-playwright-docker.sh npm run test:e2e`.
|
||||
|
||||
The script:
|
||||
1. Builds the `bitvid-playwright` Docker image (based on `mcr.microsoft.com/playwright`).
|
||||
2. Mounts the current directory to `/app` (allowing source changes to be reflected immediately).
|
||||
3. Uses an anonymous volume for `/app/node_modules` to preserve the container's Linux-specific dependencies.
|
||||
4. Outputs test artifacts to `artifacts/test-results` (accessible on the host).
|
||||
|
||||
### Visual Regression Debugging
|
||||
|
||||
Visual regression tests (`test:visual`) are configured to retain screenshots, videos, and traces when they fail. These artifacts are stored in the `artifacts/test-results` directory.
|
||||
|
||||
Executable
+29
@@ -0,0 +1,29 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Build the Docker image
|
||||
echo "Building Docker image bitvid-playwright..."
|
||||
docker build -t bitvid-playwright .
|
||||
|
||||
# Check if arguments are provided, default to "npm run test:visual" if not
|
||||
if [ $# -eq 0 ]; then
|
||||
CMD="npm run test:visual"
|
||||
else
|
||||
CMD="$@"
|
||||
fi
|
||||
|
||||
echo "Running: $CMD"
|
||||
|
||||
# Run the container
|
||||
# - --rm: Remove container after exit
|
||||
# - -it: Interactive terminal
|
||||
# - --ipc=host: Recommended for Playwright to avoid memory issues
|
||||
# - -v $(pwd):/app: Mount current directory to /app for live code updates and artifacts
|
||||
# - -v /app/node_modules: Anonymous volume to preserve container's node_modules (prevents host node_modules from overriding)
|
||||
# - -w /app: Set working directory
|
||||
docker run --rm -it --ipc=host \
|
||||
-v "$(pwd):/app" \
|
||||
-v /app/node_modules \
|
||||
-w /app \
|
||||
bitvid-playwright \
|
||||
$CMD
|
||||
Reference in new issue
Block a user