ci: setup playwright #461
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build, Test, and Deploy | |
on: | |
pull_request: | |
types: | |
- opened | |
- synchronize | |
- reopened | |
push: | |
branches: | |
- master | |
jobs: | |
check-rebase: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Fetch all branches | |
run: | | |
git fetch --all | |
- name: Check for divergence from master | |
run: | | |
git fetch origin master | |
UPSTREAM=${{ github.base_ref }} # Target branch of the pull request (usually master) | |
CURRENT=$(git rev-parse HEAD) # Latest commit on the PR branch | |
MERGED=$(git merge-base HEAD origin/$UPSTREAM) # Common ancestor between HEAD and master | |
if [ "$MERGED" != "$CURRENT" ]; then | |
echo "This branch is not rebased with the latest master." | |
exit 1 | |
else | |
echo "This branch is up-to-date with master." | |
fi | |
build: | |
needs: check-rebase | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set Node Version | |
uses: actions/setup-node@v4 | |
with: | |
node-version: lts/iron | |
- name: Set the branch name | |
id: set_branch | |
run: | | |
BRANCH_NAME=${{ github.head_ref }} | |
echo "Branch name is: $BRANCH_NAME" | |
# Check for remote branch | |
REMOTE_BRANCH=$(git ls-remote --heads https://[email protected]/chintankavathia/ngx-datatable-snapshots.git $BRANCH_NAME) | |
echo "Remote branch lookup result: $REMOTE_BRANCH" | |
if [ -n "$REMOTE_BRANCH" ]; then | |
echo "Branch $BRANCH_NAME exists" | |
echo "branch=$BRANCH_NAME" >> $GITHUB_ENV | |
else | |
echo "Branch $BRANCH_NAME does not exist, defaulting to main" | |
echo "branch=main" >> $GITHUB_ENV | |
fi | |
- name: Clone Snapshot Repository | |
run: | | |
git clone https://[email protected]/chintankavathia/ngx-datatable-snapshots.git temp_snapshots | |
cd temp_snapshots | |
git checkout ${{ env.branch }} | |
env: | |
SNAPSHOT_REPO_TOKEN: ${{ secrets.SNAPSHOT_REPO_TOKEN }} | |
- name: Copy Snapshots to Playwright Folder | |
run: | | |
mkdir -p playwright/snapshots | |
cp -r temp_snapshots/snapshots/e2e playwright/snapshots/ | |
rm -rf temp_snapshots | |
- name: Install | |
uses: bahmutov/npm-install@v1 | |
- name: Build and package library | |
run: | | |
npm run package --if-present | |
env: | |
CI: true | |
- name: Format | |
run: | | |
npm run format:check --if-present | |
env: | |
CI: true | |
- name: Build | |
run: | | |
npm run build --if-present | |
env: | |
CI: true | |
- name: Test | |
run: | | |
npm run ci --if-present | |
env: | |
CI: true | |
- name: E2E Prepare | |
run: | | |
npm run e2e:prepare --if-present | |
env: | |
CI: true | |
- name: E2E | |
run: | | |
npm run vrt --if-present | |
env: | |
CI: true | |
- name: Build Docs | |
run: | | |
npm run build-docs --if-present | |
env: | |
CI: true | |
- name: Deploy Docs | |
uses: JamesIves/[email protected] | |
with: | |
branch: gh-pages | |
folder: dist/ngx-datatable | |
if: ${{ github.ref == 'refs/heads/master' }} |