-
Notifications
You must be signed in to change notification settings - Fork 47k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update on "[compiler] Todo for fbt with multiple pronoun/plural"
--- (pasted from fixture comment) The root issue here is that fbt:plural/enum/pronoun read `.start` and `.end` from babel nodes to slice into source strings for some complex dedupe logic (see [_getStringVariationCombinations](https://github.com/facebook/fbt/blob/main/packages/babel-plugin-fbt/src/JSFbtBuilder.js#L297)) Since Forget does not add `.start` and `.end` for babel nodes it synthesizes, [getRawSource](https://github.com/facebook/fbt/blob/main/packages/babel-plugin-fbt/src/FbtUtil.js#L666-L673) simply returns the whole source code string. As a result, all fbt nodes dedupe together and _getStringVariationCombinations ends up early exiting (before adding valid candidate values). For fbt:plural tags specifically, the `count` node require that a `.start/.end` be attached (see [code in FbtPluralNode](https://github.com/facebook/fbt/blob/main/packages/babel-plugin-fbt/src/fbt-nodes/FbtPluralNode.js#L87-L90)). --- For now, let's just bail out :-) [ghstack-poisoned]
- Loading branch information
Showing
105 changed files
with
1,534 additions
and
708 deletions.
There are no files selected for viewing
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,171 @@ | ||
name: (DevTools) Regression Tests | ||
|
||
on: | ||
schedule: | ||
- cron: 0 0 * * * | ||
workflow_dispatch: | ||
inputs: | ||
prerelease_commit_sha: | ||
required: false | ||
|
||
env: | ||
TZ: /usr/share/zoneinfo/America/Los_Angeles | ||
|
||
jobs: | ||
download_build: | ||
if: inputs.prerelease_commit_sha == '' | ||
name: Download base build | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/setup-node@v4 | ||
with: | ||
node-version: 18.20.1 | ||
cache: yarn | ||
cache-dependency-path: yarn.lock | ||
- name: Restore cached node_modules | ||
uses: actions/cache@v4 | ||
id: node_modules | ||
with: | ||
path: "**/node_modules" | ||
key: ${{ runner.arch }}-${{ runner.os }}-modules-${{ hashFiles('yarn.lock', 'scripts/release/yarn.lock') }} | ||
- run: yarn install --frozen-lockfile | ||
- run: yarn install --frozen-lockfile | ||
working-directory: scripts/release | ||
- name: Download react-devtools artifacts for base revision | ||
run: | | ||
git fetch origin main | ||
GH_TOKEN=${{ github.token }} scripts/release/download-experimental-build-ghaction.js --commit=$(git rev-parse origin/main) | ||
- name: Display structure of build | ||
run: ls -R build | ||
- name: Archive build | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: build | ||
path: build | ||
|
||
build_devtools_and_process_artifacts: | ||
name: Build DevTools and process artifacts | ||
needs: download_build | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/setup-node@v4 | ||
with: | ||
node-version: 18.20.1 | ||
cache: yarn | ||
cache-dependency-path: yarn.lock | ||
- name: Restore cached node_modules | ||
uses: actions/cache@v4 | ||
id: node_modules | ||
with: | ||
path: "**/node_modules" | ||
key: ${{ runner.arch }}-${{ runner.os }}-modules-${{ hashFiles('yarn.lock') }} | ||
- run: yarn install --frozen-lockfile | ||
- name: Restore archived build | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: build | ||
path: build | ||
- run: ./scripts/circleci/pack_and_store_devtools_artifacts.sh | ||
env: | ||
RELEASE_CHANNEL: experimental | ||
- name: Display structure of build | ||
run: ls -R build | ||
- name: Archive devtools build | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: react-devtools | ||
path: build/devtools.tgz | ||
# Simplifies getting the extension for local testing | ||
- name: Archive chrome extension | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: react-devtools-chrome-extension | ||
path: build/devtools/chrome-extension.zip | ||
- name: Archive firefox extension | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: react-devtools-firefox-extension | ||
path: build/devtools/firefox-extension.zip | ||
|
||
run_devtools_tests_for_versions: | ||
name: Run DevTools tests for versions | ||
needs: build_devtools_and_process_artifacts | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
version: | ||
- "16.0" | ||
- "16.5" # schedule package | ||
- "16.8" # hooks | ||
- "17.0" | ||
- "18.0" | ||
continue-on-error: true | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/setup-node@v4 | ||
with: | ||
node-version: 18.20.1 | ||
cache: yarn | ||
cache-dependency-path: yarn.lock | ||
- name: Restore cached node_modules | ||
uses: actions/cache@v4 | ||
id: node_modules | ||
with: | ||
path: "**/node_modules" | ||
key: ${{ runner.arch }}-${{ runner.os }}-modules-${{ hashFiles('yarn.lock') }} | ||
- run: yarn install --frozen-lockfile | ||
- name: Restore all archived build artifacts | ||
uses: actions/download-artifact@v4 | ||
- name: Display structure of build | ||
run: ls -R build | ||
- run: ./scripts/circleci/download_devtools_regression_build.js ${{ matrix.version }} --replaceBuild | ||
- run: node ./scripts/jest/jest-cli.js --build --project devtools --release-channel=experimental --reactVersion ${{ matrix.version }} --ci=github | ||
|
||
run_devtools_e2e_tests_for_versions: | ||
name: Run DevTools e2e tests for versions | ||
needs: build_devtools_and_process_artifacts | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
version: | ||
- "16.0" | ||
- "16.5" # schedule package | ||
- "16.8" # hooks | ||
- "17.0" | ||
- "18.0" | ||
continue-on-error: true | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/setup-node@v4 | ||
with: | ||
node-version: 18.20.1 | ||
cache: yarn | ||
cache-dependency-path: yarn.lock | ||
- name: Restore cached node_modules | ||
uses: actions/cache@v4 | ||
id: node_modules | ||
with: | ||
path: "**/node_modules" | ||
key: ${{ runner.arch }}-${{ runner.os }}-modules-${{ hashFiles('yarn.lock') }} | ||
- run: yarn install --frozen-lockfile | ||
- name: Restore all archived build artifacts | ||
uses: actions/download-artifact@v4 | ||
- name: Display structure of build | ||
run: ls -R build | ||
- name: Playwright install deps | ||
run: | | ||
npx playwright install | ||
sudo npx playwright install-deps | ||
- run: ./scripts/circleci/download_devtools_regression_build.js ${{ matrix.version }} | ||
- run: ls -R build-regression | ||
- run: ./scripts/circleci/run_devtools_e2e_tests.js ${{ matrix.version }} | ||
env: | ||
RELEASE_CHANNEL: experimental | ||
- name: Cleanup build regression folder | ||
run: rm -r ./build-regression | ||
- uses: actions/upload-artifact@v4 | ||
with: | ||
name: screenshots | ||
path: ./tmp/screenshots |
Oops, something went wrong.