GitHub Actions is Microsoft's native CI/CD platform — built directly into GitHub. Define pipelines as YAML workflows that trigger on push, PR, schedule, or any event. Build, test, report and deploy — all automated.
GitHub Actions lives inside your repository. No external CI server. No separate login. Define your entire pipeline in a YAML file and GitHub runs it automatically on any event you choose.
Before Actions, teams juggled Jenkins, CircleCI, Travis and separate deployment scripts. Every tool had its own auth, config format and UI. Context-switching was constant.
GitHub Actions unifies everything: the code, the pipeline, the secrets, the artifacts and the deployment — all in one place. Push a commit, and your entire CI/CD chain kicks off automatically. No setup, no servers, no separate tools.
name: Playwright CI on: push: branches: [main, develop] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 - run: npm ci - run: npx playwright install --with-deps - run: npx playwright test - uses: actions/upload-artifact@v4 if: always() with: name: playwright-report path: playwright-report/
Every push to your repository sets this pipeline in motion — automatically, in sequence, in minutes.
jobs: playwright: name: Playwright (${{ matrix.browser }}) runs-on: ubuntu-latest strategy: fail-fast: false # don't cancel others on one failure matrix: browser: [chromium, firefox, webkit] steps: - uses: actions/checkout@v4 - run: npm ci - run: npx playwright install ${{ matrix.browser }} --with-deps - run: npx playwright test --project=${{ matrix.browser }} env: BASE_URL: ${{ secrets.STAGING_URL }} TEST_USER: ${{ secrets.TEST_USER }} TEST_PASS: ${{ secrets.TEST_PASS }} - uses: actions/upload-artifact@v4 if: failure() # only upload on fail with: name: traces-${{ matrix.browser }} path: test-results/
GitHub Actions supports 20+ trigger events. Here are the ones every SDET uses daily to automate test execution.
on:
push:
branches: [main, develop]
on:
pull_request:
branches: [main]
on:
schedule:
- cron: '0 2 * * *'
on:
workflow_dispatch:
inputs:
environment: staging
on:
release:
types: [published]
on:
workflow_call:
inputs:
url: {type: string}
Choose a workflow preset or build your own. Watch the animated pipeline graph execute in real-time — parallel jobs, dependencies, matrix expansions, artifacts and status gates all visualised live.
name: playwright # push → main / develop on: push: { branches: [main] } jobs: t: runs-on: ubuntu-latest steps: # Received push event · branch: main · Run #7203 queued setup: runs-on: ubuntu-latest steps: # actions/checkout@v4 · HEAD sha: a3f9c12 · actions/setup-node@v4 · node 20.11.0 chrome: needs: [setup] # runs in parallel with sibling jobs runs-on: ubuntu-latest steps: # npx playwright install chromium --with-deps · Browser: Chromium 124.0.6367.60 firefox: needs: [setup] # runs in parallel with sibling jobs runs-on: ubuntu-latest steps: # npx playwright install firefox --with-deps · Browser: Firefox 125.0 webkit: needs: [setup] # runs in parallel with sibling jobs runs-on: ubuntu-latest steps: # npx playwright install webkit --with-deps · Browser: WebKit 17.4 report: needs: [chrome, firefox, webkit] runs-on: ubuntu-latest steps: # Merging reports from 3 matrix jobs... · Generating HTML report (playwright-report/) gate: needs: [report] runs-on: ubuntu-latest steps: # All required jobs passed ✓ · github/checks: playwright / test → success
Enter your GitHub username (and optionally a Personal Access Token for private repos & workflow runs). Data is fetched live from the GitHub API — nothing stored.
🔒 Token is used only in your browser for this session — never sent to any server. Generate one at github.com/settings/tokens with repo + workflow scopes.
Create a YAML file in .github/workflows/ and GitHub detects it automatically. No external tool installation, no CI server setup.
mkdir -p .github/workflows.github/workflows/ci.ymlon: push / pull_request / schedulejobs: test: runs-on: ubuntu-latestsecrets.BASE_URL / secrets.TEST_PASSnpx playwright install --with-depsactions/upload-artifact@v4Settings → Branches → Protection RulesThe patterns that keep CI pipelines fast, reliable and maintainable as your test suite grows.