Skip to content

akulakum is running Pull Request CI #1174

akulakum is running Pull Request CI

akulakum is running Pull Request CI #1174

Workflow file for this run

name: Pull Request CI
run-name: ${{ github.actor }} is running Pull Request CI
on:
pull_request_target:
branches:
- next
types: [opened, labeled, reopened, synchronize]
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
rid: ${{ github.run_id }}-${{ github.run_number }}
PW_SANDBOX_PASSWORD: ${{ secrets.PW_SANDBOX_PASSWORD }}
PW_SENDER_EMAIL_PASSWORD: ${{ secrets.PW_SENDER_EMAIL_PASSWORD }}
PW_SANDBOX: ${{ secrets.PW_SANDBOX }}
PW_ENTRY_POINT1: ${{ secrets.PW_ENTRY_POINT1 }}
PW_ENTRY_POINT2: ${{ secrets.PW_ENTRY_POINT2 }}
PW_ENTRY_POINT3: ${{ secrets.PW_ENTRY_POINT3 }}
PW_ENTRY_POINT4: ${{ secrets.PW_ENTRY_POINT4 }}
PW_ENTRY_POINT5: ${{ secrets.PW_ENTRY_POINT5 }}
PW_ENTRY_POINT6: ${{ secrets.PW_ENTRY_POINT6 }}
PW_SENDER_EMAIL: ${{ secrets.PW_SENDER_EMAIL }}
PW_CHAT_URL: ${{ secrets.PW_CHAT_URL }}
PW_DIAL_NUMBER_LOGIN_USERNAME: ${{ secrets.PW_DIAL_NUMBER_LOGIN_USERNAME }}
PW_DIAL_NUMBER_LOGIN_PASSWORD: ${{ secrets.PW_DIAL_NUMBER_LOGIN_PASSWORD }}
PW_DIAL_NUMBER: ${{ secrets.PW_DIAL_NUMBER }}
PW_DIAL_NUMBER_NAME: ${{ secrets.PW_DIAL_NUMBER_NAME }}
PW_ENTRYPOINT_NAME: ${{ secrets.PW_ENTRYPOINT_NAME }}
jobs:
validate:
name: Validate Pull Request
runs-on: ubuntu-latest
if: contains(toJson(github.event.pull_request.labels), 'validated')
steps:
- name: Validate PR title
run: |
TITLE="${{ github.event.pull_request.title }}"
echo "PR Title is: '$TITLE'"
regex="^(fix|feat|chore)\([^()]+\): .+"
if [[ $TITLE =~ $regex ]]; then
echo "PR title is valid."
else
echo "Error: PR title does NOT follow the required convention."
echo "Expected format: fix|feat|chore(some-text): description..."
exit 1
fi
install:
runs-on: ubuntu-latest
needs: validate
steps:
- name: Checkout Project
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
registry-url: 'https://registry.npmjs.org'
cache: 'yarn'
- id: validate-dependencies
name: Validate Dependencies
uses: actions/cache@v4
with:
path: '**/node_modules'
key: node-modules-${{ hashFiles('./yarn.lock') }}
- id: lock-hash
name: Store Lock Hash
run: echo "hash=$(echo ${{ hashFiles('./yarn.lock') }})" >> $GITHUB_OUTPUT
- name: Install Dependencies
run: yarn
- name: Cache Dependencies
uses: actions/cache@v4
if: steps.validate-dependencies.outputs.cache-hit != 'true'
with:
path: '**/node_modules'
key: node-modules-${{ hashFiles('./yarn.lock') }}
build:
runs-on: ubuntu-latest
needs: install
steps:
- name: Checkout Project
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
registry-url: 'https://registry.npmjs.org'
cache: 'yarn'
- name: Uncache Dependencies
uses: actions/cache@v4
with:
path: '**/node_modules'
key: node-modules-${{ hashFiles('./yarn.lock') }}
- name: Build meetings widget
run: yarn workspace @webex/widgets run build:src
- name: Build cc widgets
run: yarn run build
- name: Cache Distributables
uses: actions/cache@v4
with:
path: '**/dist'
key: dist-${{ env.rid }}
linter:
runs-on: ubuntu-latest
needs: install
steps:
- name: Checkout Project
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
registry-url: 'https://registry.npmjs.org'
cache: 'yarn'
- name: Uncache Dependencies
uses: actions/cache@v4
with:
path: '**/node_modules'
key: node-modules-${{ hashFiles('./yarn.lock') }}
- name: Test linting in meetings widget
run: yarn workspace @webex/widgets run test:eslint
- name: Test linting in cc widgets
run: yarn run test:styles
e2e_test_meetings:
runs-on: ubuntu-latest
continue-on-error: true
needs: [install, build]
if: contains(toJson(github.event.pull_request.labels), 'run_e2e')
steps:
- name: Checkout Project
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
registry-url: 'https://registry.npmjs.org'
cache: 'yarn'
- name: Uncache Dependencies
uses: actions/cache@v4
with:
path: '**/node_modules'
key: node-modules-${{ hashFiles('./yarn.lock') }}
- name: Uncache Distributables
uses: actions/cache@v4
with:
path: '**/dist'
key: dist-${{ env.rid }}
- name: Test E2E
run: yarn workspace @webex/widgets run test:e2e
e2e_test_cc_widgets:
timeout-minutes: 50
runs-on: ubuntu-latest
needs: [install, build]
if: contains(toJson(github.event.pull_request.labels), 'run_e2e')
steps:
- name: Checkout Project
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
registry-url: 'https://registry.npmjs.org'
cache: 'yarn'
- name: Uncache Dependencies
uses: actions/cache@v4
with:
path: '**/node_modules'
key: node-modules-${{ hashFiles('./yarn.lock') }}
- name: Install Playwright Browsers
run: npx playwright install --with-deps
- name: Uncache Distributables
uses: actions/cache@v4
with:
path: '**/dist'
key: dist-${{ env.rid }}
- name: Write Environment Variables
run: |
touch ./.env
echo "PLAYWRIGHT_USERNAME=\"${{ secrets.PLAYWRIGHT_USERNAME }}\"" >> ./.env
echo "PLAYWRIGHT_PASSWORD=\"${{ secrets.PLAYWRIGHT_PASSWORD }}\"" >> ./.env
- name: Run Playwright tests
run: yarn run test:e2e
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: playwright-report
path: |
**/playwright-report/**
**/test-results/**
retention-days: 10
unit_tests:
runs-on: ubuntu-latest
needs: [install, build]
steps:
- name: Checkout Project
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
registry-url: 'https://registry.npmjs.org'
cache: 'yarn'
- name: Uncache Dependencies
uses: actions/cache@v4
with:
path: '**/node_modules'
key: node-modules-${{ hashFiles('./yarn.lock') }}
- name: Uncache Distributables
uses: actions/cache@v4
with:
path: '**/dist'
key: dist-${{ env.rid }}
- name: Test Tooling
run: yarn run test:tooling
- name: Test CC Widgets
run: yarn run test:cc-widgets