Skip to content

fix(Toggletip): prevent escape key from propagating when open (#19152) #30789

fix(Toggletip): prevent escape key from propagating when open (#19152)

fix(Toggletip): prevent escape key from propagating when open (#19152) #30789

Workflow file for this run

name: ci
on:
push:
branches:
- main
pull_request:
types: [opened, reopened, synchronize, ready_for_review]
branches:
- main
merge_group:
types: [checks_requested]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
dedupe:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- name: Use Node.js version from .nvmrc
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version-file: '.nvmrc'
- name: Run yarn dedupe
run: yarn dedupe --check
format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- name: Use Node.js version from .nvmrc
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version-file: '.nvmrc'
- name: Install dependencies
env:
YARN_ENABLE_HARDENED_MODE: 0
run: yarn install --immutable --immutable-cache
- name: Check formatting of project files
run: yarn format:diff
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- name: Use Node.js version from .nvmrc
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version-file: '.nvmrc'
- name: Install dependencies
env:
YARN_ENABLE_HARDENED_MODE: 0
run: yarn install --immutable --immutable-cache
- name: Lint code
run: yarn lint
- name: Lint styles
run: yarn lint:styles
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- name: Use Node.js version from .nvmrc
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version-file: '.nvmrc'
- uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
if: github.event_name != 'merge_group'
id: cache
with:
path: |
node_modules
*/**/node_modules
key:
${{ runner.os }}-yarn-${{ hashFiles('yarn.lock',
'packages/**/yarn.lock') }}
- name: Install dependencies
env:
YARN_ENABLE_HARDENED_MODE: 0
run: yarn install --immutable --immutable-cache
- name: Build project
run: yarn build
- name: Check generated styles
run: |
yarn carbon-cli check --ignore '**/@(node_modules|examples|components|react|fixtures|compat)/**' 'packages/**/*.scss'
- name: Run tests
run: yarn test --ci --collectCoverage
- name: Upload coverage reports to Codecov with GitHub Action
uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
flags: main-packages
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
web-components-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- name: Use Node.js version from .nvmrc
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version-file: '.nvmrc'
- uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
if: github.event_name != 'merge_group'
id: cache
with:
path: |
node_modules
*/**/node_modules
key:
${{ runner.os }}-yarn-${{ hashFiles('yarn.lock',
'packages/**/yarn.lock') }}
- name: Install dependencies
env:
YARN_ENABLE_HARDENED_MODE: 0
run: yarn install --immutable --immutable-cache
- name: Build web-components project
run:
yarn lerna run build --scope='@carbon/web-components'
--include-dependencies
- name: Run tests
run: |
cd packages/web-components
yarn test --coverage
- name: Upload web-components coverage reports to Codecov
uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
files: ./packages/web-components/coverage/lcov.info
flags: web-components
verbose: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
e2e:
name: 'test:e2e'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- name: Use Node.js version from .nvmrc
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version-file: '.nvmrc'
- uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
if: github.event_name != 'merge_group'
id: cache
with:
path: |
node_modules
*/**/node_modules
key:
${{ runner.os }}-yarn-${{ hashFiles('yarn.lock',
'packages/**/yarn.lock') }}
- name: Install dependencies
env:
YARN_ENABLE_HARDENED_MODE: 0
run: yarn install --immutable --immutable-cache
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
id: filter
with:
filters: |
e2e:
- 'e2e/**'
- 'packages/icons/**'
- 'packages/icons-react/**'
- 'packages/icons-vue/**'
- 'packages/pictograms/**'
- 'packages/pictograms-react/**'
- 'packages/icon-build-helpers/**'
- name: Build project
if: ${{ steps.filter.outputs.e2e == 'true' }}
run: yarn build
- name: Run e2e tests
if: ${{ steps.filter.outputs.e2e == 'true' }}
run: yarn test:e2e
vrt-runner:
strategy:
fail-fast: false
matrix:
shardIndex: [1, 2, 3, 4]
shardTotal: [4]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- name: Use Node.js version from .nvmrc
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version-file: '.nvmrc'
- uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
if: github.event_name != 'merge_group'
id: cache
with:
path: |
node_modules
*/**/node_modules
key:
${{ runner.os }}-yarn-${{ hashFiles('yarn.lock',
'packages/**/yarn.lock') }}
- name: Install dependencies
env:
YARN_ENABLE_HARDENED_MODE: 0
run: yarn install --immutable --immutable-cache
- name: Install browsers
run: yarn playwright install --with-deps
- name: Build project
run: yarn build
- name: Build storybook
run: yarn workspace @carbon/react storybook:build
- name: Run storybook
id: storybook
run: |
npx serve -l 3000 packages/react/storybook-static &
pid=$!
echo "pid=$pid" >> $GITHUB_OUTPUT
- uses: ./actions/wait-for-it
with:
URL: 'http://localhost:3000'
timeout-minutes: 3
- name: Run VRT
if:
${{ github.repository == 'carbon-design-system/carbon' &&
github.event.pull_request.draft == false }}
env:
PERCY_TOKEN: c9a21a3fde4fda0a0f822d633426ab26e2ab2c1cba55221d342d4047744c8c24
PERCY_PARALLEL_TOTAL: 4
run: |
yarn percy exec --parallel -- yarn playwright test --project chromium --grep @vrt --shard="${{ matrix.shardIndex }}/${{ matrix.shardTotal }}"
- name: Dry run VRT on draft PRs
if:
${{ github.repository == 'carbon-design-system/carbon' &&
github.event.pull_request.draft != false && github.base_ref != 'main'
}}
env:
PERCY_TOKEN: c9a21a3fde4fda0a0f822d633426ab26e2ab2c1cba55221d342d4047744c8c24
PERCY_PARALLEL_TOTAL: 4
run: |
yarn percy exec --parallel -- yarn playwright test --project chromium --grep @vrt --shard="${{ matrix.shardIndex }}/${{ matrix.shardTotal }}" --dry-run
- name: Stop storybook
run: kill ${{ steps.storybook.outputs.pid }}
- name: Upload blob report to GitHub Actions Artifacts
if: ${{ !cancelled() }}
uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a #4.3.6
with:
name: playwright-vrt-blob-report-${{ matrix.shardIndex }}
path: blob-report
retention-days: 1
vrt:
if: ${{ always() }}
runs-on: ubuntu-latest
needs: vrt-runner
steps:
- name: Check VRT Runner job status
if: ${{ needs.vrt-runner.result != 'success' }}
run: exit 1
avt-runner:
strategy:
fail-fast: false
matrix:
shardIndex: [1, 2, 3, 4]
shardTotal: [4]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- name: Use Node.js version from .nvmrc
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version-file: '.nvmrc'
- uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
if: github.event_name != 'merge_group'
id: cache
with:
path: |
node_modules
*/**/node_modules
key:
${{ runner.os }}-yarn-${{ hashFiles('yarn.lock',
'packages/**/yarn.lock') }}
- name: Install dependencies
env:
YARN_ENABLE_HARDENED_MODE: 0
run: yarn install --immutable --immutable-cache
- name: Install browsers
run: yarn playwright install --with-deps
- name: Build project
run: yarn build
- name: Build storybook
run: yarn workspace @carbon/react storybook:build
- name: Run storybook
id: storybook
run: |
npx serve -l 3000 packages/react/storybook-static &
pid=$!
echo "pid=$pid" >> $GITHUB_OUTPUT
- uses: ./actions/wait-for-it
with:
URL: 'http://localhost:3000'
timeout-minutes: 3
- name: Run AVT
if: github.repository == 'carbon-design-system/carbon'
run: |
yarn playwright test --project chromium --grep @avt --shard="${{ matrix.shardIndex }}/${{ matrix.shardTotal }}"
- name: Stop storybook
run: kill ${{ steps.storybook.outputs.pid }}
- name: Upload blob report to GitHub Actions Artifacts
if: ${{ !cancelled() }}
uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a #4.3.6
with:
name: playwright-avt-blob-report-${{ matrix.shardIndex }}
path: blob-report
retention-days: 1
avt:
if: ${{ always() }}
runs-on: ubuntu-latest
needs: avt-runner
steps:
- name: Check AVT Runner job status
if: ${{ needs.avt-runner.result != 'success' }}
run: exit 1
merge-playwright-reports:
# Merge reports after *-runner jobs, even if some shards have failed
if:
${{ github.repository == 'carbon-design-system/carbon' && !cancelled() }}
needs: [vrt-runner, avt-runner]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- name: Use Node.js version from .nvmrc
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version-file: '.nvmrc'
- uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
if: github.event_name != 'merge_group'
id: cache
with:
path: |
node_modules
*/**/node_modules
key:
${{ runner.os }}-yarn-${{ hashFiles('yarn.lock',
'packages/**/yarn.lock') }}
- name: Install dependencies
env:
YARN_ENABLE_HARDENED_MODE: 0
run: yarn install --immutable --immutable-cache
- name: Download vrt blob reports from GitHub Actions Artifacts
uses: actions/download-artifact@v5
with:
path: all-playwright-vrt-blob-reports
pattern: playwright-vrt-blob-report-*
merge-multiple: true
- name: Merge vrt reports into HTML Report
run:
npx playwright merge-reports --reporter html
./all-playwright-vrt-blob-reports
- name: Upload vrt HTML report
uses: actions/upload-artifact@v4
with:
name: html-playwright-vrt-report--attempt-${{ github.run_attempt }}
path: playwright-vrt-report
retention-days: 14
- name: Download avt blob reports from GitHub Actions Artifacts
uses: actions/download-artifact@v5
with:
path: all-playwright-avt-blob-reports
pattern: playwright-avt-blob-report-*
merge-multiple: true
- name: Merge avt reports into HTML Report
run:
npx playwright merge-reports --reporter html
./all-playwright-avt-blob-reports
- name: Upload avt HTML report
uses: actions/upload-artifact@v4
with:
name: html-playwright-avt-report--attempt-${{ github.run_attempt }}
path: playwright-avt-report
retention-days: 14
chromatic-react:
if:
${{ github.repository == 'carbon-design-system/carbon' &&
github.event.pull_request.draft == false }}
runs-on: ubuntu-latest
outputs:
buildUrl: ${{ steps.chromatic.outputs.buildUrl }}
storybookUrl: ${{ steps.chromatic.outputs.storybookUrl }}
steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
fetch-depth: 0
# πŸ‘‡ Tells the checkout which commit hash to reference
# https://www.chromatic.com/docs/github-actions/#recommended-configuration-for-build-events
ref: ${{ github.event.pull_request.head.sha }}
- name: Use Node.js version from .nvmrc
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version-file: '.nvmrc'
- uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
if: github.event_name != 'merge_group'
id: cache
with:
path: |
node_modules
*/**/node_modules
key:
${{ runner.os }}-yarn-${{ hashFiles('yarn.lock',
'packages/**/yarn.lock') }}
- name: Install dependencies
env:
YARN_ENABLE_HARDENED_MODE: 0
run: yarn install --immutable --immutable-cache
- name: Build project
run: yarn build
- name: Build storybook
run: yarn workspace @carbon/react storybook:build --stats-json
- id: chromatic
name: Run Chromatic
uses: chromaui/action@58d9ffb36c90c97a02d061544ecc849cc4a242a9 # v13.1.3
with:
# πŸ‘‡ Token is intentionally plaintext
# https://www.chromatic.com/docs/github-actions/#run-chromatic-on-external-forks-of-open-source-projects
projectToken: 6q6rgoheqk2
workingDir: packages/react
buildScriptName: storybook:build
zip: true # Runs Chromatic with the option to compress the build output
autoAcceptChanges: 'main' # Option to accept all changes on main
# πŸ‘‡ Add debug: true and print dependency trace for changed files to help with debugging:
traceChanged: 'expanded'
debug: true
onlyChanged: true # πŸ‘ˆ Required option to enable TurboSnap
externals: |
packages/(colors|elements|feature-flags|grid|icons|icons-react|layout|motion|pictograms|pictograms-react|styles|themes|type|utilities|utilities-react)/**
*.sass
untraced: |
config/**
env:
# πŸ‘‡ Set to the PR branch if it's a PR; otherwise, falls back to the pushed branch name
CHROMATIC_BRANCH:
${{ github.event.pull_request.head.ref || github.ref_name }}
# πŸ‘‡ Set to the PR head commit if it's a PR; otherwise to the ref (which typically resolves to the latest commit SHA)
CHROMATIC_SHA: ${{ github.event.pull_request.head.sha || github.ref }}
# πŸ‘‡ Makes sure this is always set to the corect owner/repo
CHROMATIC_SLUG: ${{ github.repository }}
# This takes the chromatic storybook url and pipes it into a github deployment
# environment so that PRs will have the deploy preview listed in both the
# PR timeline and the 'branch deployment' section at the bottom above the
# status checks. This avoids noisy/large comments for deploy previews.
react-storybook-preview:
runs-on: ubuntu-latest
needs: chromatic-react
environment:
name: '@carbon/react storybook preview'
url: ${{ needs.chromatic-react.outputs.storybookUrl }}
steps:
- name: Generate job summary
env:
buildUrl: ${{ needs.chromatic-react.outputs.buildUrl }}
storybookUrl: ${{ needs.chromatic-react.outputs.storybookUrl }}
run: |
echo "### @carbon/react storybook deploy preview :rocket:" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY # this is a blank line
echo "- Storybook deploy preview: ${{ env.storybookUrl }}" >> $GITHUB_STEP_SUMMARY
echo "- Commit: ${{ github.event.pull_request.head.sha }}" >> $GITHUB_STEP_SUMMARY
echo "- Chromatic build URL: ${{ env.buildUrl }}" >> $GITHUB_STEP_SUMMARY