Skip to content

ci: setup playwright #474

ci: setup playwright

ci: setup playwright #474

Workflow file for this run

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
with:
fetch-depth: 0 # Ensure full history is fetched
- name: Add upstream remote
run: |
# Add the upstream repository (base repo)
echo "Adding upstream remote..."
git remote add upstream https://github.com/siemens/ngx-datatable.git
git fetch upstream
echo "Upstream remote added and fetched."
- name: Fetch PR Branch from Fork
run: |
echo "Fetching PR branch from fork..."
git fetch origin pull/${{ github.event.pull_request.number }}/head:${{ github.head_ref }}
echo "Fetched PR branch: ${{ github.head_ref }}"
- name: Attach to PR Branch
run: |
echo "Checking out the PR branch: ${{ github.head_ref }}"
git checkout ${{ github.head_ref }}
echo "Checked out branch: ${{ github.head_ref }}"
- name: Fetch the latest upstream master (or main) branch
run: |
echo "Fetching latest master from upstream..."
git fetch upstream master # or main if that's your default branch
echo "Fetched latest master branch from upstream."
- name: Check if PR branch is rebased onto master
run: |
UPSTREAM=master # Use 'main' if your default branch is named 'main'
echo "Target upstream branch: $UPSTREAM"
# Get the current and merged commit hashes
CURRENT=$(git rev-parse HEAD)
MERGED=$(git merge-base HEAD upstream/$UPSTREAM)
echo "Current commit hash: $CURRENT"
echo "Merged commit hash: $MERGED"
# Check if the PR branch contains commits not part of master
# Use git log to check for commits in the PR branch that are not in upstream/master
PR_COMMITS=$(git log upstream/$UPSTREAM..HEAD --oneline)
if [ -n "$PR_COMMITS" ]; then
echo "This branch contains additional commits that are intended for merging into $UPSTREAM."
echo "Ignoring these commits as they are already part of the intended changes."
else
echo "Branch is up-to-date with $UPSTREAM."
fi
# Proceed with checking if the PR branch is based on the latest master
if [ "$MERGED" != "$CURRENT" ]; then
echo "This branch is not rebased with the latest $UPSTREAM."
echo "Run 'git rebase upstream/$UPSTREAM' locally to fix this."
exit 1
else
echo "Branch is rebased and up-to-date with $UPSTREAM."
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' }}