diff --git a/.github/actions/load-verdaccio-with-amplify-js/action.yml b/.github/actions/load-verdaccio-with-amplify-js/action.yml index c8cd349cb86..9cc06324872 100644 --- a/.github/actions/load-verdaccio-with-amplify-js/action.yml +++ b/.github/actions/load-verdaccio-with-amplify-js/action.yml @@ -6,7 +6,8 @@ runs: steps: - name: Start verdaccio run: | - npx verdaccio@5.25.0 & + # This version supports Node.js v22 + npx verdaccio@5.31.1 & while ! nc -z localhost 4873; do echo "Verdaccio not running yet" sleep 1 @@ -18,25 +19,32 @@ runs: - name: Install and run npm-cli-login shell: bash env: - NPM_REGISTRY: http://localhost:4873/ + NPM_REGISTRY_HOST: localhost:4873 + NPM_REGISTRY: http://localhost:4873 NPM_USER: verdaccio NPM_PASS: verdaccio NPM_EMAIL: verdaccio@amplify.js run: | - npm i -g npm-cli-adduser - npm-cli-adduser - sleep 1 + # Make the HTTP request that npm addUser makes to avoid the "Exit handler never called" error + TOKEN=$(curl -s \ + -H "Accept: application/json" \ + -H "Content-Type:application/json" \ + -X PUT --data "{\"name\": \"$NPM_USER\", \"password\": \"$NPM_PASS\", \"email\": \"$NPM_EMAIL\"}" \ + $NPM_REGISTRY/-/user/org.couchdb.user:$NPM_USER 2>&1 | jq -r '.token') + + # Set the Verdaccio registry and set the token for logging in + yarn config set registry $NPM_REGISTRY + npm set registry $NPM_REGISTRY + npm set //"$NPM_REGISTRY_HOST"/:_authToken $TOKEN - name: Configure registry and git shell: bash working-directory: ./amplify-js env: - NPM_REGISTRY: http://localhost:4873/ + NPM_REGISTRY: http://localhost:4873 NPM_USER: verdaccio NPM_PASS: verdaccio NPM_EMAIL: verdaccio@amplify.js run: | - yarn config set registry $NPM_REGISTRY - npm set registry $NPM_REGISTRY git config --global user.email $NPM_EMAIL git config --global user.name $NPM_USER git status diff --git a/.github/actions/node-and-build/action.yml b/.github/actions/node-and-build/action.yml index 0af092c4c84..becd2d49165 100644 --- a/.github/actions/node-and-build/action.yml +++ b/.github/actions/node-and-build/action.yml @@ -4,13 +4,15 @@ inputs: is-prebuild: required: false default: false + node_version: + required: false runs: using: 'composite' steps: - - name: Setup Node.js 18 + - name: Setup Node.js uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 with: - node-version: 18.20.2 + node-version: ${{ inputs.node_version || '18.x' }} env: SEGMENT_DOWNLOAD_TIMEOUT_MINS: 2 - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 diff --git a/.github/integ-config/integ-all.yml b/.github/integ-config/integ-all.yml index d29ae41ba42..db7f9d64444 100644 --- a/.github/integ-config/integ-all.yml +++ b/.github/integ-config/integ-all.yml @@ -829,7 +829,7 @@ tests: sample_name: [guest-access] spec: storage-client-server browser: *minimal_browser_list - + # INAPPMESSAGING - test_name: integ_in_app_messaging desc: 'React InApp Messaging' @@ -856,3 +856,10 @@ tests: spec: ssr-context-isolation yarn_script: ci:ssr-context-isolation browser: [chrome] + - test_name: integ_node_envs + desc: 'Node.js environment tests' + framework: node + category: integration + sample_name: auth-gql-storage + yarn_script: ci:node-env-test + node_versions: ['18.x', '20.x', '22.x'] diff --git a/.github/workflows/callable-e2e-test.yml b/.github/workflows/callable-e2e-test.yml index 18697cf5dc5..fd9f9cb697a 100644 --- a/.github/workflows/callable-e2e-test.yml +++ b/.github/workflows/callable-e2e-test.yml @@ -37,6 +37,9 @@ on: yarn_script: required: false type: string + node_versions: + required: false + type: string env: AMPLIFY_DIR: /home/runner/work/amplify-js/amplify-js/amplify-js @@ -54,6 +57,8 @@ jobs: - ${{ fromJson(inputs.browser) }} sample_name: - ${{ fromJson(inputs.sample_name) }} + node_version: + - ${{ fromJson(inputs.node_versions) }} fail-fast: false timeout-minutes: ${{ inputs.timeout_minutes }} @@ -64,6 +69,8 @@ jobs: path: amplify-js - name: Setup node and build the repository uses: ./amplify-js/.github/actions/node-and-build + with: + node_version: ${{ matrix.node_version }} - name: Setup samples staging repository uses: ./amplify-js/.github/actions/setup-samples-staging with: diff --git a/.github/workflows/callable-e2e-tests.yml b/.github/workflows/callable-e2e-tests.yml index c27c51ce57f..204f8b044d9 100644 --- a/.github/workflows/callable-e2e-tests.yml +++ b/.github/workflows/callable-e2e-tests.yml @@ -44,6 +44,7 @@ jobs: timeout_minutes: ${{ matrix.integ-config.timeout_minutes || 35 }} retry_count: ${{ matrix.integ-config.retry_count || 3 }} yarn_script: ${{ matrix.integ-config.yarn_script || '' }} + node_versions: ${{ toJSON(matrix.integ-config.node_versions) || '[""]' }} # e2e-test-runner-headless: # name: E2E test runnner_headless @@ -61,16 +62,16 @@ jobs: # timeout_minutes: ${{ matrix.integ-config.timeout_minutes || 35 }} # retry_count: ${{ matrix.integ-config.retry_count || 3 }} - detox-e2e-test-runner: - name: E2E test runner - needs: e2e-prep - strategy: - matrix: - integ-config: ${{ fromJson(needs.e2e-prep.outputs.detox-integ-config) }} - fail-fast: false - secrets: inherit - uses: ./.github/workflows/callable-e2e-test-detox.yml - with: - test_name: ${{ matrix.integ-config.test_name }} - working_directory: ${{ matrix.integ-config.working_directory }} - timeout_minutes: ${{ matrix.integ-config.timeout_minutes || 45 }} + # detox-e2e-test-runner: + # name: E2E test runner + # needs: e2e-prep + # strategy: + # matrix: + # integ-config: ${{ fromJson(needs.e2e-prep.outputs.detox-integ-config) }} + # fail-fast: false + # secrets: inherit + # uses: ./.github/workflows/callable-e2e-test-detox.yml + # with: + # test_name: ${{ matrix.integ-config.test_name }} + # working_directory: ${{ matrix.integ-config.working_directory }} + # timeout_minutes: ${{ matrix.integ-config.timeout_minutes || 45 }} diff --git a/.github/workflows/callable-release-verification.yml b/.github/workflows/callable-release-verification.yml index 30fd4b0c7e0..3d270d97521 100644 --- a/.github/workflows/callable-release-verification.yml +++ b/.github/workflows/callable-release-verification.yml @@ -7,16 +7,16 @@ jobs: uses: ./.github/workflows/callable-prebuild-amplify-js.yml with: runs_on: ubuntu-latest - prebuild-macos: - uses: ./.github/workflows/callable-prebuild-amplify-js.yml - with: - runs_on: macos-latest + # prebuild-macos: + # uses: ./.github/workflows/callable-prebuild-amplify-js.yml + # with: + # runs_on: macos-latest prebuild-samples-staging: secrets: inherit uses: ./.github/workflows/callable-prebuild-samples-staging.yml e2e: needs: - - prebuild-macos + # - prebuild-macos - prebuild-ubuntu - prebuild-samples-staging secrets: inherit