From 1c18bd14cdd19894e2d4b3b0dd1364a92eb786b9 Mon Sep 17 00:00:00 2001 From: Artur Date: Fri, 28 Feb 2025 16:30:47 +0200 Subject: [PATCH] test: Run tests using React 19 + 18 (#2962) --- .github/workflows/validation.yml | 69 +++++++++++++++++-- package-lock.json | 6 +- package.json | 1 + .../resources/vaadin-featureflags.properties | 2 + .../resources/vaadin-featureflags.properties | 2 + packages/java/tests/pom.xml | 55 ++++++++++++--- packages/java/tests/spring/pom.xml | 48 +++++++++++++ .../resources/vaadin-featureflags.properties | 4 ++ .../resources/vaadin-featureflags.properties | 2 + .../resources/vaadin-featureflags.properties | 2 + packages/ts/file-router/package.json | 1 + .../package.json | 5 +- packages/ts/react-auth/package.json | 1 + packages/ts/react-crud/package.json | 1 + packages/ts/react-form/package.json | 1 + packages/ts/react-i18n/package.json | 1 + packages/ts/react-signals/package.json | 1 + 17 files changed, 180 insertions(+), 22 deletions(-) create mode 100644 packages/java/tests/gradle/single-module-tests/src/main/resources/vaadin-featureflags.properties create mode 100644 packages/java/tests/gradle/single-module/src/main/resources/vaadin-featureflags.properties create mode 100644 packages/java/tests/spring/react-grid-test/src/main/resources/vaadin-featureflags.properties diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index 63fb8490d3..d1fb1c84df 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -91,8 +91,6 @@ jobs: name: Check style runs-on: ubuntu-latest timeout-minutes: 25 - strategy: - fail-fast: false steps: - name: Checkout Project Code @@ -120,8 +118,6 @@ jobs: name: Test Java runs-on: ubuntu-latest timeout-minutes: 25 - strategy: - fail-fast: false steps: - name: Checkout Project Code @@ -160,8 +156,6 @@ jobs: name: Test TypeScript runs-on: ubuntu-latest timeout-minutes: 25 - strategy: - fail-fast: false steps: - name: Install Chrome @@ -311,6 +305,66 @@ jobs: packages/java/gradle-plugin/build/test-results/* packages/java/gradle-plugin/build/reports/* + test-react-18: + needs: + - init + name: React 18 Tests + runs-on: ubuntu-latest + timeout-minutes: 25 + steps: + - name: Install Chrome + id: setup-chrome + uses: browser-actions/setup-chrome@v1 + - name: Checkout Project Code + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} + fetch-depth: 0 + - name: Setup + uses: ./.github/actions/setup + - uses: actions/download-artifact@v4 + with: + name: saved-workspace + - name: Restore Workspace + run: | + set -x + tar xf workspace.tar + tar cf - .m2 | (cd ~ && tar xf -) + - name: Install React 18 + run: npm install --save-dev react@18 react-dom@18 @types/react@18 @types/react-dom@18 + - name: Test + run: npm run test:react + env: + CI: true + CHROME_BIN: ${{ steps.setup-chrome.outputs.chrome-path }} + - name: Set TB License + run: | + TB_LICENSE=${{secrets.TB_LICENSE}} + mkdir -p ~/.vaadin/ + echo '{"username":"'`echo $TB_LICENSE | cut -d / -f1`'","proKey":"'`echo $TB_LICENSE | cut -d / -f2`'"}' > ~/.vaadin/proKey + - name: Verify + run: | + ( + cd packages/java/tests && \ + mvn -B -am -ntp -fae \ + -Dfailsafe.forkCount=4 \ + -Dcom.vaadin.testbench.Parameters.testsInParallel=5 \ + -Dfailsafe.rerunFailingTestsCount=2 \ + -Dmaven.wagon.httpconnectionManager.ttlSeconds=25 \ + -Dmaven.wagon.http.retryHandler.count=3 \ + -P\!it-modules \ + -Preact-18 \ + -Pproduction \ + verify + ) + - uses: actions/upload-artifact@v4 + if: ${{ failure() || success() }} + with: + name: saved-outputs-it-${{ matrix.os }}-${{ matrix.it-modules }} + path: | + packages/java/tests/**/target/*-reports/* + packages/java/tests/**/error-screenshots/*.png + test-all: name: Tests Summary runs-on: ubuntu-latest @@ -321,6 +375,7 @@ jobs: - test-typescript - test-it - test-gradle + - test-react-18 steps: - name: Merge Artifacts uses: actions/upload-artifact/merge@v4 @@ -328,5 +383,5 @@ jobs: name: saved-outputs pattern: saved-outputs-* - name: Fail if test jobs did not succeed - if: ${{ needs.check-style.result != 'success' || needs.test-java.result != 'success' || needs.test-typescript.result != 'success' || needs.test-it.result != 'success' || needs.test-gradle.result != 'success' }} + if: ${{ needs.check-style.result != 'success' || needs.test-java.result != 'success' || needs.test-typescript.result != 'success' || needs.test-it.result != 'success' || needs.test-gradle.result != 'success' || needs.test-react-18.result != 'success' }} run: exit 1 diff --git a/package-lock.json b/package-lock.json index afa365e66a..d79b7df16a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4512,9 +4512,9 @@ } }, "node_modules/@types/react-dom": { - "version": "19.0.3", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.3.tgz", - "integrity": "sha512-0Knk+HJiMP/qOZgMyNFamlIjw9OFCsyC2ZbigmEEyXXixgre6IQpm/4V+r3qH4GC1JPvRJKInw+on2rV6YZLeA==", + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.4.tgz", + "integrity": "sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==", "devOptional": true, "license": "MIT", "peerDependencies": { diff --git a/package.json b/package.json index e0c67d984a..26d9407288 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "lint:fix": "nx run-many -t lint:fix --all --output-style stream", "test": "nx run-many -t test --all --output-style stream", "test:coverage": "nx run-many -t test:coverage --all --output-style stream", + "test:react": "nx run-many -t test:react --all --output-style stream", "typecheck": "nx run-many -t typecheck --all --output-style stream" }, "repository": { diff --git a/packages/java/tests/gradle/single-module-tests/src/main/resources/vaadin-featureflags.properties b/packages/java/tests/gradle/single-module-tests/src/main/resources/vaadin-featureflags.properties new file mode 100644 index 0000000000..80f7397d52 --- /dev/null +++ b/packages/java/tests/gradle/single-module-tests/src/main/resources/vaadin-featureflags.properties @@ -0,0 +1,2 @@ +# React 19 (default in Vaadin 25) +com.vaadin.experimental.react19=true diff --git a/packages/java/tests/gradle/single-module/src/main/resources/vaadin-featureflags.properties b/packages/java/tests/gradle/single-module/src/main/resources/vaadin-featureflags.properties new file mode 100644 index 0000000000..80f7397d52 --- /dev/null +++ b/packages/java/tests/gradle/single-module/src/main/resources/vaadin-featureflags.properties @@ -0,0 +1,2 @@ +# React 19 (default in Vaadin 25) +com.vaadin.experimental.react19=true diff --git a/packages/java/tests/pom.xml b/packages/java/tests/pom.xml index 5c493501f4..96f9929cd9 100644 --- a/packages/java/tests/pom.xml +++ b/packages/java/tests/pom.xml @@ -30,6 +30,9 @@ false + + true + 8888 @@ -139,6 +142,18 @@ + + org.codehaus.mojo + properties-maven-plugin + ${properties-maven-plugin.version} + + + + set-system-properties + + + + org.apache.maven.plugins maven-failsafe-plugin @@ -252,16 +267,26 @@ - ${vaadin.reuseDevServer} - - ${vaadin.devmode.liveReload.enabled} - - ${vaadin.allow.appshell.annotations} - - - ${jetty.scantrigger}--> - - ${vaadin.devmode.vite.options} + + ${jetty.scantrigger} + + + ${vaadin.reuseDevServer} + + + ${vaadin.devmode.liveReload.enabled} + + + ${vaadin.allow.appshell.annotations} + + + + ${vaadin.devmode.vite.options} + + + ${vaadin.experimental.react19} + @@ -331,5 +356,15 @@ + + react-18 + + false + + + spring + + + diff --git a/packages/java/tests/spring/pom.xml b/packages/java/tests/spring/pom.xml index 4401d1dbba..8381de75e6 100644 --- a/packages/java/tests/spring/pom.xml +++ b/packages/java/tests/spring/pom.xml @@ -130,6 +130,44 @@ + + + + ${vaadin.reuseDevServer} + + + ${vaadin.devmode.liveReload.enabled} + + + ${vaadin.allow.appshell.annotations} + + + + ${vaadin.devmode.vite.options} + + + ${vaadin.experimental.react19} + + + ${vaadin.reuseDevServer} + + + ${vaadin.devmode.liveReload.enabled} + + + ${vaadin.allow.appshell.annotations} + + + + ${vaadin.devmode.vite.options} + + + ${vaadin.experimental.react19} + + + @@ -231,6 +269,16 @@ + + react-18 + + no-endpoints + react-grid-test + react-i18n + react-signals + + + native diff --git a/packages/java/tests/spring/react-grid-test/src/main/resources/vaadin-featureflags.properties b/packages/java/tests/spring/react-grid-test/src/main/resources/vaadin-featureflags.properties new file mode 100644 index 0000000000..1cdc976662 --- /dev/null +++ b/packages/java/tests/spring/react-grid-test/src/main/resources/vaadin-featureflags.properties @@ -0,0 +1,4 @@ +# Enable Hilla I18n feature flag so that we can test it +com.vaadin.experimental.hillaI18n=true +# React 19 (default in Vaadin 25) +com.vaadin.experimental.react19=true diff --git a/packages/java/tests/spring/react-i18n/src/main/resources/vaadin-featureflags.properties b/packages/java/tests/spring/react-i18n/src/main/resources/vaadin-featureflags.properties index d26e4c1cd8..1cdc976662 100644 --- a/packages/java/tests/spring/react-i18n/src/main/resources/vaadin-featureflags.properties +++ b/packages/java/tests/spring/react-i18n/src/main/resources/vaadin-featureflags.properties @@ -1,2 +1,4 @@ # Enable Hilla I18n feature flag so that we can test it com.vaadin.experimental.hillaI18n=true +# React 19 (default in Vaadin 25) +com.vaadin.experimental.react19=true diff --git a/packages/java/tests/spring/react-signals/src/main/resources/vaadin-featureflags.properties b/packages/java/tests/spring/react-signals/src/main/resources/vaadin-featureflags.properties index 64ea97e958..730ab22978 100644 --- a/packages/java/tests/spring/react-signals/src/main/resources/vaadin-featureflags.properties +++ b/packages/java/tests/spring/react-signals/src/main/resources/vaadin-featureflags.properties @@ -1,2 +1,4 @@ # Experimental feature flags for Vaadin com.vaadin.experimental.fullstackSignals=true +# React 19 (default in Vaadin 25) +com.vaadin.experimental.react19=true diff --git a/packages/ts/file-router/package.json b/packages/ts/file-router/package.json index 3047ecd365..fe2e908a01 100644 --- a/packages/ts/file-router/package.json +++ b/packages/ts/file-router/package.json @@ -25,6 +25,7 @@ "lint:fix": "eslint src test --fix", "test": "vitest --run", "test:coverage": "vitest --run --coverage", + "test:react": "npm run test", "test:watch": "vitest", "typecheck": "tsc --noEmit" }, diff --git a/packages/ts/generator-plugin-transfertypes/package.json b/packages/ts/generator-plugin-transfertypes/package.json index c9f8a94c88..b1fce05ab7 100644 --- a/packages/ts/generator-plugin-transfertypes/package.json +++ b/packages/ts/generator-plugin-transfertypes/package.json @@ -13,8 +13,9 @@ "lint": "eslint src test", "lint:fix": "eslint src test --fix", "test": "vitest --run", - "test:update": "vitest --update", - "test:coverage": "vitest --coverage", + "test:coverage": "vitest --run --coverage", + "test:update": "vitest --run --update", + "test:watch": "vitest", "typecheck": "tsc --noEmit" }, "exports": { diff --git a/packages/ts/react-auth/package.json b/packages/ts/react-auth/package.json index 4d0124bc68..e4846eaf48 100644 --- a/packages/ts/react-auth/package.json +++ b/packages/ts/react-auth/package.json @@ -22,6 +22,7 @@ "lint:fix": "eslint src test --fix", "test": "vitest --run", "test:coverage": "vitest --run --coverage", + "test:react": "npm run test", "test:watch": "vitest", "typecheck": "tsc --noEmit" }, diff --git a/packages/ts/react-crud/package.json b/packages/ts/react-crud/package.json index eafb23aa22..150c546e6b 100644 --- a/packages/ts/react-crud/package.json +++ b/packages/ts/react-crud/package.json @@ -22,6 +22,7 @@ "lint:fix": "eslint src test --fix", "test": "vitest --run", "test:coverage": "vitest --run --coverage", + "test:react": "npm run test", "test:watch": "vitest", "typecheck": "tsc --noEmit" }, diff --git a/packages/ts/react-form/package.json b/packages/ts/react-form/package.json index 36a92ad886..441db91ce8 100644 --- a/packages/ts/react-form/package.json +++ b/packages/ts/react-form/package.json @@ -22,6 +22,7 @@ "lint:fix": "eslint src test --fix", "test": "vitest --run", "test:coverage": "vitest --run --coverage", + "test:react": "npm run test", "test:watch": "vitest", "typecheck": "tsc --noEmit" }, diff --git a/packages/ts/react-i18n/package.json b/packages/ts/react-i18n/package.json index 548c051582..8ac1f59c07 100644 --- a/packages/ts/react-i18n/package.json +++ b/packages/ts/react-i18n/package.json @@ -22,6 +22,7 @@ "lint:fix": "eslint src test --fix", "test": "vitest --run", "test:coverage": "vitest --run --coverage", + "test:react": "npm run test", "test:watch": "vitest", "typecheck": "tsc --noEmit" }, diff --git a/packages/ts/react-signals/package.json b/packages/ts/react-signals/package.json index ad043f1f1b..6ee0a642ce 100644 --- a/packages/ts/react-signals/package.json +++ b/packages/ts/react-signals/package.json @@ -22,6 +22,7 @@ "lint:fix": "eslint src test --fix", "test": "vitest --run", "test:coverage": "vitest --run --coverage", + "test:react": "npm run test", "test:watch": "vitest", "typecheck": "tsc --noEmit" },