Skip to content

Commit

Permalink
ci: setup playwright
Browse files Browse the repository at this point in the history
Added support for playwright e2e tests.
  • Loading branch information
chintankavathia authored and spike-rabbit committed Dec 10, 2024
1 parent e818477 commit c94af51
Show file tree
Hide file tree
Showing 27 changed files with 1,476 additions and 46 deletions.
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
* text=auto
docs/* linguist-documentation
release/* linguist-vendored
playwright/snapshots/e2e/**/*.png filter=lfs diff=lfs merge=lfs -text
15 changes: 15 additions & 0 deletions .github/workflows/test_and_deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ jobs:
with:
node-version: lts/iron

- name: Pull Repository with LFS
run: git lfs pull

- name: Install
uses: bahmutov/npm-install@v1

Expand Down Expand Up @@ -41,6 +44,18 @@ jobs:
env:
CI: true

- name: E2E Prepare
run: |
npm run e2e:prepare --if-present
env:
CI: true

- name: E2E
run: |
npm run e2e --if-present
env:
CI: true

- name: Build Docs
run: |
npm run build-docs --if-present
Expand Down
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,9 @@ coverage/
yarn.lock
/.vscode
*.tgz
/test-results/
/playwright-report/
/blob-report/
/playwright/.cache/
/playwright/results/
.env
3 changes: 3 additions & 0 deletions .lfsconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[lfs]
url = https://github.com/siemens/ngx-datatable-snapshots.git/info/lfs
pushurl = https://github.com/siemens/ngx-datatable-snapshots.git/info/lfs
105 changes: 105 additions & 0 deletions e2e-local.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
#!/bin/sh

cd $(dirname $0)

# this is to stop MSys (Git bash on Windows) from messing with the paths
export MSYS_NO_PATHCONV=1

# Keep image version in sync with image used in .gitlab-ci.yml
PLAYWRIGHT_IMAGE="mcr.microsoft.com/playwright:v1.46.0-jammy"
OS=$(uname -s)
CWD=$(pwd)

if [ x"$DOCKER" = "x" ]; then
DOCKER=docker
fi

case "$DOCKER" in
*podman*)
BRIDGE_ADDRESS=host.containers.internal
;;
*)
BRIDGE_ADDRESS=host.docker.internal
;;
esac

if command -v getenforce &> /dev/null && [ "$(getenforce)" = "Enforcing" ]; then
MOUNT_FLAGS=",Z"
fi

LOCAL_ADDRESS=$BRIDGE_ADDRESS
NETWORK_MODE=bridge
DISPLAY=$LOCAL_ADDRESS:0

case "$OS" in
Linux*)
LOCAL_ADDRESS=localhost
NETWORK_MODE=host
DISPLAY=$DISPLAY
;;
MINGW*)
CWD=$(cygpath -w $CWD)
;;
esac

if [ x$PORT = "x" ]; then
PORT=4200
fi

echo "Using '$DOCKER' in '$NETWORK_MODE' mode, connecting to '$LOCAL_ADDRESS:$PORT'"


if [ x$1 = "xshell" ]; then
shift
$DOCKER run -it --rm \
-e DISPLAY=$DISPLAY \
-e LOCAL_ADDRESS=$LOCAL_ADDRESS \
-e PORT=$PORT \
-e PLAYWRIGHT_CONTAINER=true \
-e PLAYWRIGHT_isvrt=true \
-e PLAYWRIGHT_staticTest=$PLAYWRIGHT_staticTest \
-v $CWD:/e2e:rw$MOUNT_FLAGS \
-w /e2e \
--net=$NETWORK_MODE \
--ipc=host \
--entrypoint bash \
$PLAYWRIGHT_IMAGE \
"$@"

else
if [ x$1 = "xrun" ]; then
shift
fi
if [ x$1 = "xvrt" ]; then
shift
PLAYWRIGHT_isvrt=true
fi
if [ x$1 = "xa11y" ]; then
shift
PLAYWRIGHT_isa11y=true
fi
if [ x$1 = "xupdate" ]; then
shift
# using env var so the user can pass a --env
UPDATE_ARGS="--update-snapshots"
PLAYWRIGHT_isvrt=true
fi
$DOCKER run -it --rm \
-e LOCAL_ADDRESS=$LOCAL_ADDRESS \
-e PORT=$PORT \
-e PLAYWRIGHT_CONTAINER=true \
-e PLAYWRIGHT_isa11y=$PLAYWRIGHT_isa11y \
-e PLAYWRIGHT_isvrt=$PLAYWRIGHT_isvrt \
-e PLAYWRIGHT_staticTest=$PLAYWRIGHT_staticTest \
-v $CWD:/e2e:rw$MOUNT_FLAGS \
-w /e2e \
--net=$NETWORK_MODE \
--ipc=host \
$PLAYWRIGHT_IMAGE \
npx \
playwright \
test \
$UPDATE_ARGS \
"$@" \
|| yarn playwright show-report playwright/results/preview
fi
Loading

0 comments on commit c94af51

Please sign in to comment.