diff --git a/.github/workflows/pr-build-and-e2e-tests.yml b/.github/workflows/pr-build-and-e2e-tests.yml index 328549ec59a..de213e34671 100644 --- a/.github/workflows/pr-build-and-e2e-tests.yml +++ b/.github/workflows/pr-build-and-e2e-tests.yml @@ -68,7 +68,7 @@ jobs: - name: Load docker images and start containers. working-directory: package/woocommerce/plugins/woocommerce - run: pnpx wc-e2e docker:up + run: pnpm exec wc-e2e docker:up - name: Run tests command. working-directory: package/woocommerce/plugins/woocommerce @@ -76,7 +76,7 @@ jobs: WC_E2E_SCREENSHOTS: 1 E2E_SLACK_TOKEN: ${{ secrets.E2E_SLACK_TOKEN }} E2E_SLACK_CHANNEL: ${{ secrets.E2E_SLACK_CHANNEL }} - run: pnpx wc-e2e test:e2e + run: pnpm exec wc-e2e test:e2e - name: Archive E2E test screenshots uses: actions/upload-artifact@v2 @@ -127,7 +127,7 @@ jobs: - name: Load docker images and start containers. working-directory: package/woocommerce/plugins/woocommerce - run: pnpx wc-e2e docker:up + run: pnpm exec wc-e2e docker:up - name: Run tests command. working-directory: package/woocommerce/plugins/woocommerce @@ -135,15 +135,15 @@ jobs: BASE_URL: http://localhost:8084 USER_KEY: admin USER_SECRET: password - run: pnpx wc-api-tests test api + run: pnpm exec wc-api-tests test api - name: Upload API test report uses: actions/upload-artifact@v2 with: name: api-test-report---pr-${{ github.event.number }} path: | - package/woocommerce/packages/js/api-core-tests/allure-results - package/woocommerce/packages/js/api-core-tests/allure-report + package/woocommerce/packages/js/api-core-tests/allure-results + package/woocommerce/packages/js/api-core-tests/allure-report retention-days: 7 k6-tests-run: @@ -182,15 +182,15 @@ jobs: run: | npm install -g pnpm pnpm install - + - name: Workaround to use initialization file with prepopulated data. working-directory: package/woocommerce/plugins/woocommerce/tests/e2e/docker run: | cp init-sample-products.sh initialize.sh - + - name: Load docker images and start containers. working-directory: package/woocommerce/plugins/woocommerce - run: pnpx wc-e2e docker:up + run: pnpm exec wc-e2e docker:up - name: Install k6 run: | diff --git a/.github/workflows/pr-smoke-test.yml b/.github/workflows/pr-smoke-test.yml index 18afd599b05..933038e8a59 100644 --- a/.github/workflows/pr-smoke-test.yml +++ b/.github/workflows/pr-smoke-test.yml @@ -1,110 +1,110 @@ name: Run smoke tests against pull request. on: - pull_request: - branches: - - trunk - types: - - labeled + pull_request: + branches: + - trunk + types: + - labeled jobs: - prcheck: - name: Smoke test a pull request. - if: "${{ contains(github.event.label.name, 'run: smoke tests') }}" - runs-on: ubuntu-18.04 - steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.7.0 - with: - access_token: ${{ github.token }} + prcheck: + name: Smoke test a pull request. + if: "${{ contains(github.event.label.name, 'run: smoke tests') }}" + runs-on: ubuntu-18.04 + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.7.0 + with: + access_token: ${{ github.token }} - - name: Create dirs. - run: | - mkdir -p code/woocommerce - mkdir -p package/woocommerce - mkdir -p tmp/woocommerce - mkdir -p node_modules + - name: Create dirs. + run: | + mkdir -p code/woocommerce + mkdir -p package/woocommerce + mkdir -p tmp/woocommerce + mkdir -p node_modules - - name: Checkout code. - uses: actions/checkout@v2 - with: - path: package/woocommerce + - name: Checkout code. + uses: actions/checkout@v2 + with: + path: package/woocommerce - - name: Install prerequisites. - working-directory: package/woocommerce/plugins/woocommerce - id: installation - run: | - npm install -g pnpm - pnpm install - pnpm nx composer-install-no-dev woocommerce - pnpm nx build-assets woocommerce - pnpm install jest + - name: Install prerequisites. + working-directory: package/woocommerce/plugins/woocommerce + id: installation + run: | + npm install -g pnpm + pnpm install + pnpm nx composer-install-no-dev woocommerce + pnpm nx build-assets woocommerce + pnpm install jest - - name: Run smoke test. - working-directory: package/woocommerce/plugins/woocommerce - if: always() - env: - SMOKE_TEST_URL: ${{ secrets.SMOKE_TEST_URL }} - SMOKE_TEST_ADMIN_USER: ${{ secrets.SMOKE_TEST_ADMIN_USER }} - SMOKE_TEST_ADMIN_PASSWORD: ${{ secrets.SMOKE_TEST_ADMIN_PASSWORD }} - SMOKE_TEST_ADMIN_USER_EMAIL: ${{ secrets.SMOKE_TEST_ADMIN_USER_EMAIL }} - SMOKE_TEST_CUSTOMER_USER: ${{ secrets.SMOKE_TEST_CUSTOMER_USER }} - SMOKE_TEST_CUSTOMER_PASSWORD: ${{ secrets.SMOKE_TEST_CUSTOMER_PASSWORD }} - WC_E2E_SCREENSHOTS: 1 - E2E_RETEST: 1 - E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} - E2E_SLACK_CHANNEL: ${{ secrets.SMOKE_TEST_SLACK_CHANNEL }} - UPDATE_WC: 1 - DEFAULT_TIMEOUT_OVERRIDE: 120000 - run: | - pnpx wc-e2e test:e2e tests/e2e/specs/smoke-tests/update-woocommerce.js + - name: Run smoke test. + working-directory: package/woocommerce/plugins/woocommerce + if: always() + env: + SMOKE_TEST_URL: ${{ secrets.SMOKE_TEST_URL }} + SMOKE_TEST_ADMIN_USER: ${{ secrets.SMOKE_TEST_ADMIN_USER }} + SMOKE_TEST_ADMIN_PASSWORD: ${{ secrets.SMOKE_TEST_ADMIN_PASSWORD }} + SMOKE_TEST_ADMIN_USER_EMAIL: ${{ secrets.SMOKE_TEST_ADMIN_USER_EMAIL }} + SMOKE_TEST_CUSTOMER_USER: ${{ secrets.SMOKE_TEST_CUSTOMER_USER }} + SMOKE_TEST_CUSTOMER_PASSWORD: ${{ secrets.SMOKE_TEST_CUSTOMER_PASSWORD }} + WC_E2E_SCREENSHOTS: 1 + E2E_RETEST: 1 + E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} + E2E_SLACK_CHANNEL: ${{ secrets.SMOKE_TEST_SLACK_CHANNEL }} + UPDATE_WC: 1 + DEFAULT_TIMEOUT_OVERRIDE: 120000 + run: | + pnpm exec wc-e2e test:e2e tests/e2e/specs/smoke-tests/update-woocommerce.js - - name: Post Smoke tests results comment on PR - if: always() - uses: actions/github-script@v5 - env: - TITLE: 'Smoke Test Results' - SMOKE_TEST_URL: ${{ secrets.SMOKE_TEST_URL }} - with: - github-token: ${{secrets.GITHUB_TOKEN}} - script: | - const script = require( './package/woocommerce/packages/js/e2e-environment/bin/post-results-to-github-pr.js' ) - await script({github, context}) + - name: Post Smoke tests results comment on PR + if: always() + uses: actions/github-script@v5 + env: + TITLE: 'Smoke Test Results' + SMOKE_TEST_URL: ${{ secrets.SMOKE_TEST_URL }} + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + const script = require( './package/woocommerce/packages/js/e2e-environment/bin/post-results-to-github-pr.js' ) + await script({github, context}) - - name: Run E2E tests. - working-directory: package/woocommerce/plugins/woocommerce - if: always() - env: - SMOKE_TEST_URL: ${{ secrets.SMOKE_TEST_URL }} - SMOKE_TEST_ADMIN_USER: ${{ secrets.SMOKE_TEST_ADMIN_USER }} - SMOKE_TEST_ADMIN_PASSWORD: ${{ secrets.SMOKE_TEST_ADMIN_PASSWORD }} - SMOKE_TEST_ADMIN_USER_EMAIL: ${{ secrets.SMOKE_TEST_ADMIN_USER_EMAIL }} - SMOKE_TEST_CUSTOMER_USER: ${{ secrets.SMOKE_TEST_CUSTOMER_USER }} - SMOKE_TEST_CUSTOMER_PASSWORD: ${{ secrets.SMOKE_TEST_CUSTOMER_PASSWORD }} - WC_E2E_SCREENSHOTS: 1 - E2E_RETEST: 1 - E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} - E2E_SLACK_CHANNEL: ${{ secrets.SMOKE_TEST_SLACK_CHANNEL }} - UPDATE_WC: 1 - DEFAULT_TIMEOUT_OVERRIDE: 120000 - run: | - pnpx wc-e2e test:e2e + - name: Run E2E tests. + working-directory: package/woocommerce/plugins/woocommerce + if: always() + env: + SMOKE_TEST_URL: ${{ secrets.SMOKE_TEST_URL }} + SMOKE_TEST_ADMIN_USER: ${{ secrets.SMOKE_TEST_ADMIN_USER }} + SMOKE_TEST_ADMIN_PASSWORD: ${{ secrets.SMOKE_TEST_ADMIN_PASSWORD }} + SMOKE_TEST_ADMIN_USER_EMAIL: ${{ secrets.SMOKE_TEST_ADMIN_USER_EMAIL }} + SMOKE_TEST_CUSTOMER_USER: ${{ secrets.SMOKE_TEST_CUSTOMER_USER }} + SMOKE_TEST_CUSTOMER_PASSWORD: ${{ secrets.SMOKE_TEST_CUSTOMER_PASSWORD }} + WC_E2E_SCREENSHOTS: 1 + E2E_RETEST: 1 + E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} + E2E_SLACK_CHANNEL: ${{ secrets.SMOKE_TEST_SLACK_CHANNEL }} + UPDATE_WC: 1 + DEFAULT_TIMEOUT_OVERRIDE: 120000 + run: | + pnpm exec wc-e2e test:e2e - - name: Post E2E tests results comment on PR - if: always() - uses: actions/github-script@v5 - env: - TITLE: 'E2E Test Results' - SMOKE_TEST_URL: ${{ secrets.SMOKE_TEST_URL }} - with: - github-token: ${{secrets.GITHUB_TOKEN}} - script: | - const script = require( './package/woocommerce/packages/js/e2e-environment/bin/post-results-to-github-pr.js' ) - await script({github, context}) + - name: Post E2E tests results comment on PR + if: always() + uses: actions/github-script@v5 + env: + TITLE: 'E2E Test Results' + SMOKE_TEST_URL: ${{ secrets.SMOKE_TEST_URL }} + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + const script = require( './package/woocommerce/packages/js/e2e-environment/bin/post-results-to-github-pr.js' ) + await script({github, context}) - - name: Remove label from pull request. - if: | - always() - && contains( github.event.pull_request.labels.*.name, format('run{0} smoke tests', ':')) - uses: actions-ecosystem/action-remove-labels@v1 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - labels: 'run: smoke tests' + - name: Remove label from pull request. + if: | + always() + && contains( github.event.pull_request.labels.*.name, format('run{0} smoke tests', ':')) + uses: actions-ecosystem/action-remove-labels@v1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + labels: 'run: smoke tests' diff --git a/.github/workflows/smoke-test-daily.yml b/.github/workflows/smoke-test-daily.yml index e9126b249b2..bd6b2fd693e 100644 --- a/.github/workflows/smoke-test-daily.yml +++ b/.github/workflows/smoke-test-daily.yml @@ -1,154 +1,153 @@ name: Smoke test daily on: - schedule: - - cron: '25 3 * * *' + schedule: + - cron: '25 3 * * *' jobs: - login-run: - name: Daily smoke test on trunk. - runs-on: ubuntu-18.04 - steps: + login-run: + name: Daily smoke test on trunk. + runs-on: ubuntu-18.04 + steps: + - name: Create dirs. + run: | + mkdir -p code/woocommerce + mkdir -p package/woocommerce + mkdir -p tmp/woocommerce + mkdir -p node_modules - - name: Create dirs. - run: | - mkdir -p code/woocommerce - mkdir -p package/woocommerce - mkdir -p tmp/woocommerce - mkdir -p node_modules + - name: Checkout code. + uses: actions/checkout@v2 + with: + path: package/woocommerce + ref: trunk - - name: Checkout code. - uses: actions/checkout@v2 - with: - path: package/woocommerce - ref: trunk + - name: Install prerequisites. + working-directory: package/woocommerce/plugins/woocommerce + run: | + npm install -g pnpm + pnpm install + pnpm nx composer-install-no-dev woocommerce + pnpm nx build-assets woocommerce + pnpm install jest - - name: Install prerequisites. - working-directory: package/woocommerce/plugins/woocommerce - run: | - npm install -g pnpm - pnpm install - pnpm nx composer-install-no-dev woocommerce - pnpm nx build-assets woocommerce - pnpm install jest - - - name: Run smoke test. - working-directory: package/woocommerce/plugins/woocommerce - env: - SMOKE_TEST_URL: ${{ secrets.SMOKE_TEST_URL }} - SMOKE_TEST_ADMIN_USER: ${{ secrets.SMOKE_TEST_ADMIN_USER }} - SMOKE_TEST_ADMIN_PASSWORD: ${{ secrets.SMOKE_TEST_ADMIN_PASSWORD }} - SMOKE_TEST_ADMIN_USER_EMAIL: ${{ secrets.SMOKE_TEST_ADMIN_USER_EMAIL }} - SMOKE_TEST_CUSTOMER_USER: ${{ secrets.SMOKE_TEST_CUSTOMER_USER }} - SMOKE_TEST_CUSTOMER_PASSWORD: ${{ secrets.SMOKE_TEST_CUSTOMER_PASSWORD }} - WC_E2E_SCREENSHOTS: 1 - E2E_RETEST: 1 - E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} - E2E_SLACK_CHANNEL: ${{ secrets.SMOKE_TEST_SLACK_CHANNEL }} - UPDATE_WC: 1 - DEFAULT_TIMEOUT_OVERRIDE: 120000 - BASE_URL: ${{ secrets.SMOKE_TEST_URL }} - USER_KEY: ${{ secrets.SMOKE_TEST_ADMIN_USER }} - USER_SECRET: ${{ secrets.SMOKE_TEST_ADMIN_PASSWORD }} - run: | - pnpx wc-e2e test:e2e tests/e2e/specs/smoke-tests/update-woocommerce.js - pnpx wc-e2e test:e2e - pnpx wc-api-tests test api + - name: Run smoke test. + working-directory: package/woocommerce/plugins/woocommerce + env: + SMOKE_TEST_URL: ${{ secrets.SMOKE_TEST_URL }} + SMOKE_TEST_ADMIN_USER: ${{ secrets.SMOKE_TEST_ADMIN_USER }} + SMOKE_TEST_ADMIN_PASSWORD: ${{ secrets.SMOKE_TEST_ADMIN_PASSWORD }} + SMOKE_TEST_ADMIN_USER_EMAIL: ${{ secrets.SMOKE_TEST_ADMIN_USER_EMAIL }} + SMOKE_TEST_CUSTOMER_USER: ${{ secrets.SMOKE_TEST_CUSTOMER_USER }} + SMOKE_TEST_CUSTOMER_PASSWORD: ${{ secrets.SMOKE_TEST_CUSTOMER_PASSWORD }} + WC_E2E_SCREENSHOTS: 1 + E2E_RETEST: 1 + E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} + E2E_SLACK_CHANNEL: ${{ secrets.SMOKE_TEST_SLACK_CHANNEL }} + UPDATE_WC: 1 + DEFAULT_TIMEOUT_OVERRIDE: 120000 + BASE_URL: ${{ secrets.SMOKE_TEST_URL }} + USER_KEY: ${{ secrets.SMOKE_TEST_ADMIN_USER }} + USER_SECRET: ${{ secrets.SMOKE_TEST_ADMIN_PASSWORD }} + run: | + pnpm exec wc-e2e test:e2e tests/e2e/specs/smoke-tests/update-woocommerce.js + pnpm exec wc-e2e test:e2e + pnpm exec wc-api-tests test api - build: - name: Build zip for PR - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v2 + build: + name: Build zip for PR + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 - - name: Build - id: build - uses: woocommerce/action-build@trunk - env: - BUILD_ENV: e2e + - name: Build + id: build + uses: woocommerce/action-build@trunk + env: + BUILD_ENV: e2e - - name: Upload PR zip - uses: actions/upload-artifact@v2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - name: woocommerce - path: ${{ steps.build.outputs.zip_path }} - retention-days: 7 - - test-plugins: - name: Smoke tests with ${{ matrix.plugin }} plugin installed - runs-on: ubuntu-18.04 - needs: [build] - strategy: - fail-fast: false - matrix: - include: - - plugin: 'WooCommerce Payments' - repo: 'automattic/woocommerce-payments' - - plugin: 'WooCommerce PayPal Payments' - repo: 'woocommerce/woocommerce-paypal-payments' - - plugin: 'WooCommerce Shipping & Tax' - repo: 'automattic/woocommerce-services' - - plugin: 'WooCommerce Subscriptions' - repo: WC_SUBSCRIPTIONS_REPO - private: true - - plugin: 'WordPress SEO' # Yoast SEO in the UI, but the slug is wordpress-seo - repo: 'Yoast/wordpress-seo' - - plugin: 'Contact Form 7' - repo: 'takayukister/contact-form-7' - steps: - - name: Create dirs. - run: | - mkdir -p code/woocommerce - mkdir -p package/woocommerce - mkdir -p tmp/woocommerce - mkdir -p node_modules + - name: Upload PR zip + uses: actions/upload-artifact@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + name: woocommerce + path: ${{ steps.build.outputs.zip_path }} + retention-days: 7 - - name: Checkout code. - uses: actions/checkout@v2 - with: - path: package/woocommerce + test-plugins: + name: Smoke tests with ${{ matrix.plugin }} plugin installed + runs-on: ubuntu-18.04 + needs: [build] + strategy: + fail-fast: false + matrix: + include: + - plugin: 'WooCommerce Payments' + repo: 'automattic/woocommerce-payments' + - plugin: 'WooCommerce PayPal Payments' + repo: 'woocommerce/woocommerce-paypal-payments' + - plugin: 'WooCommerce Shipping & Tax' + repo: 'automattic/woocommerce-services' + - plugin: 'WooCommerce Subscriptions' + repo: WC_SUBSCRIPTIONS_REPO + private: true + - plugin: 'WordPress SEO' # Yoast SEO in the UI, but the slug is wordpress-seo + repo: 'Yoast/wordpress-seo' + - plugin: 'Contact Form 7' + repo: 'takayukister/contact-form-7' + steps: + - name: Create dirs. + run: | + mkdir -p code/woocommerce + mkdir -p package/woocommerce + mkdir -p tmp/woocommerce + mkdir -p node_modules - - name: Install PNPM and install dependencies - working-directory: package/woocommerce - run: | - npm install -g pnpm - pnpm install + - name: Checkout code. + uses: actions/checkout@v2 + with: + path: package/woocommerce - - name: Load docker images and start containers. - working-directory: package/woocommerce/plugins/woocommerce - run: pnpx wc-e2e docker:up + - name: Install PNPM and install dependencies + working-directory: package/woocommerce + run: | + npm install -g pnpm + pnpm install - - name: Move current directory to code. We will install zip file in this dir later. - run: mv ./package/woocommerce/plugins/woocommerce/* ./code/woocommerce + - name: Load docker images and start containers. + working-directory: package/woocommerce/plugins/woocommerce + run: pnpm exec wc-e2e docker:up - - name: Download WooCommerce ZIP. - uses: actions/download-artifact@v2 - with: - name: woocommerce - path: tmp + - name: Move current directory to code. We will install zip file in this dir later. + run: mv ./package/woocommerce/plugins/woocommerce/* ./code/woocommerce - - name: Extract and replace WooCommerce zip. - working-directory: tmp - run: | - unzip woocommerce.zip -d woocommerce - mv woocommerce/woocommerce/* ../package/woocommerce/plugins/woocommerce/ + - name: Download WooCommerce ZIP. + uses: actions/download-artifact@v2 + with: + name: woocommerce + path: tmp - - name: Install dependencies again - working-directory: package/woocommerce - run: | - npm install -g pnpm - pnpm install + - name: Extract and replace WooCommerce zip. + working-directory: tmp + run: | + unzip woocommerce.zip -d woocommerce + mv woocommerce/woocommerce/* ../package/woocommerce/plugins/woocommerce/ - - name: Run tests command. - working-directory: package/woocommerce/plugins/woocommerce - env: - WC_E2E_SCREENSHOTS: 1 - E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} - E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} - PLUGIN_REPOSITORY: ${{ matrix.private && secrets[matrix.repo] || matrix.repo }} - PLUGIN_NAME: ${{ matrix.plugin }} - GITHUB_TOKEN: ${{ secrets.E2E_GH_TOKEN }} - run: | - pnpx wc-e2e test:e2e tests/e2e/specs/smoke-tests/upload-plugin.js - pnpx wc-e2e test:e2e + - name: Install dependencies again + working-directory: package/woocommerce + run: | + npm install -g pnpm + pnpm install + + - name: Run tests command. + working-directory: package/woocommerce/plugins/woocommerce + env: + WC_E2E_SCREENSHOTS: 1 + E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} + E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} + PLUGIN_REPOSITORY: ${{ matrix.private && secrets[matrix.repo] || matrix.repo }} + PLUGIN_NAME: ${{ matrix.plugin }} + GITHUB_TOKEN: ${{ secrets.E2E_GH_TOKEN }} + run: | + pnpm exec wc-e2e test:e2e tests/e2e/specs/smoke-tests/upload-plugin.js + pnpm exec wc-e2e test:e2e diff --git a/.github/workflows/smoke-test-release.yml b/.github/workflows/smoke-test-release.yml index 840cd4ab570..fafb41b704f 100644 --- a/.github/workflows/smoke-test-release.yml +++ b/.github/workflows/smoke-test-release.yml @@ -1,199 +1,197 @@ name: Smoke test release on: - workflow_dispatch: - inputs: - release_id: - description: 'WooCommerce Release Id' - required: true + workflow_dispatch: + inputs: + release_id: + description: 'WooCommerce Release Id' + required: true jobs: - login-run: - name: Daily smoke test on release. - runs-on: ubuntu-18.04 - steps: + login-run: + name: Daily smoke test on release. + runs-on: ubuntu-18.04 + steps: + - name: Create dirs. + run: | + mkdir -p code/woocommerce + mkdir -p package/woocommerce + mkdir -p tmp/woocommerce + mkdir -p node_modules - - name: Create dirs. - run: | - mkdir -p code/woocommerce - mkdir -p package/woocommerce - mkdir -p tmp/woocommerce - mkdir -p node_modules + - name: Checkout code. + uses: actions/checkout@v2 + with: + path: package/woocommerce + ref: trunk - - name: Checkout code. - uses: actions/checkout@v2 - with: - path: package/woocommerce - ref: trunk + - name: Install prerequisites. + working-directory: package/woocommerce/plugins/woocommerce + run: | + npm install -g pnpm + pnpm install + pnpm nx composer-install-no-dev woocommerce + pnpm nx build-assets woocommerce + pnpm install jest - - name: Install prerequisites. - working-directory: package/woocommerce/plugins/woocommerce - run: | - npm install -g pnpm - pnpm install - pnpm nx composer-install-no-dev woocommerce - pnpm nx build-assets woocommerce - pnpm install jest - - - name: Run smoke test. - working-directory: package/woocommerce/plugins/woocommerce - env: - SMOKE_TEST_URL: ${{ secrets.RELEASE_TEST_URL }} - SMOKE_TEST_ADMIN_USER: ${{ secrets.RELEASE_TEST_ADMIN_USER }} - SMOKE_TEST_ADMIN_PASSWORD: ${{ secrets.RELEASE_TEST_ADMIN_PASSWORD }} - SMOKE_TEST_ADMIN_USER_EMAIL: ${{ secrets.RELEASE_TEST_ADMIN_USER_EMAIL }} - SMOKE_TEST_CUSTOMER_USER: ${{ secrets.RELEASE_TEST_CUSTOMER_USER }} - SMOKE_TEST_CUSTOMER_PASSWORD: ${{ secrets.RELEASE_TEST_CUSTOMER_PASSWORD }} - WC_E2E_SCREENSHOTS: 1 - E2E_RETEST: 1 - E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} - E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} - TEST_RELEASE: 1 - UPDATE_WC: 1 - DEFAULT_TIMEOUT_OVERRIDE: 120000 - BASE_URL: ${{ secrets.RELEASE_TEST_URL }} - USER_KEY: ${{ secrets.RELEASE_TEST_ADMIN_USER }} - USER_SECRET: ${{ secrets.RELEASE_TEST_ADMIN_PASSWORD }} - run: | - pnpx wc-e2e test:e2e tests/e2e/specs/smoke-tests/update-woocommerce.js - pnpx wc-e2e test:e2e - pnpx wc-api-tests test api - test-wp-version: - name: Smoke test on L-${{ matrix.wp }} WordPress version - runs-on: ubuntu-18.04 - strategy: - matrix: - wp: [ '1', '2' ] - steps: + - name: Run smoke test. + working-directory: package/woocommerce/plugins/woocommerce + env: + SMOKE_TEST_URL: ${{ secrets.RELEASE_TEST_URL }} + SMOKE_TEST_ADMIN_USER: ${{ secrets.RELEASE_TEST_ADMIN_USER }} + SMOKE_TEST_ADMIN_PASSWORD: ${{ secrets.RELEASE_TEST_ADMIN_PASSWORD }} + SMOKE_TEST_ADMIN_USER_EMAIL: ${{ secrets.RELEASE_TEST_ADMIN_USER_EMAIL }} + SMOKE_TEST_CUSTOMER_USER: ${{ secrets.RELEASE_TEST_CUSTOMER_USER }} + SMOKE_TEST_CUSTOMER_PASSWORD: ${{ secrets.RELEASE_TEST_CUSTOMER_PASSWORD }} + WC_E2E_SCREENSHOTS: 1 + E2E_RETEST: 1 + E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} + E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} + TEST_RELEASE: 1 + UPDATE_WC: 1 + DEFAULT_TIMEOUT_OVERRIDE: 120000 + BASE_URL: ${{ secrets.RELEASE_TEST_URL }} + USER_KEY: ${{ secrets.RELEASE_TEST_ADMIN_USER }} + USER_SECRET: ${{ secrets.RELEASE_TEST_ADMIN_PASSWORD }} + run: | + pnpm exec wc-e2e test:e2e tests/e2e/specs/smoke-tests/update-woocommerce.js + pnpm exec wc-e2e test:e2e + pnpm exec wc-api-tests test api + test-wp-version: + name: Smoke test on L-${{ matrix.wp }} WordPress version + runs-on: ubuntu-18.04 + strategy: + matrix: + wp: ['1', '2'] + steps: + - name: Create dirs. + run: | + mkdir -p code/woocommerce + mkdir -p package/woocommerce + mkdir -p tmp/woocommerce + mkdir -p node_modules - - name: Create dirs. - run: | - mkdir -p code/woocommerce - mkdir -p package/woocommerce - mkdir -p tmp/woocommerce - mkdir -p node_modules + - name: Checkout code. + uses: actions/checkout@v2 + with: + path: package/woocommerce + - name: Fetch Asset ID + id: fetch_asset_id + uses: actions/github-script@v5 + env: + RELEASE_ID: ${{ github.event.inputs.release_id }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO: ${{ github.repository }} + with: + script: | + const script = require( './package/woocommerce/.github/workflows/scripts/fetch-asset-id.js' ) + await script({github, context, core}) - - name: Checkout code. - uses: actions/checkout@v2 - with: - path: package/woocommerce - - name: Fetch Asset ID - id: fetch_asset_id - uses: actions/github-script@v5 - env: - RELEASE_ID: ${{ github.event.inputs.release_id }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - REPO: ${{ github.repository }} - with: - script: | - const script = require( './package/woocommerce/.github/workflows/scripts/fetch-asset-id.js' ) - await script({github, context, core}) + - name: Install PNPM and install dependencies + working-directory: package/woocommerce + run: | + npm install -g pnpm + pnpm install - - name: Install PNPM and install dependencies - working-directory: package/woocommerce - run: | - npm install -g pnpm - pnpm install + - name: Load docker images and start containers. + working-directory: package/woocommerce/plugins/woocommerce + env: + LATEST_WP_VERSION_MINUS: ${{ matrix.wp }} + run: pnpm nx docker-up woocommerce - - name: Load docker images and start containers. - working-directory: package/woocommerce/plugins/woocommerce - env: - LATEST_WP_VERSION_MINUS: ${{ matrix.wp }} - run: pnpm nx docker-up woocommerce + - name: Move current directory to code. We will install zip file in this dir later. + run: mv ./package/woocommerce/plugins/woocommerce/* ./code/woocommerce - - name: Move current directory to code. We will install zip file in this dir later. - run: mv ./package/woocommerce/plugins/woocommerce/* ./code/woocommerce + - name: Download WooCommerce release zip + working-directory: tmp + run: | + curl https://api.github.com/repos/${{ github.repository }}/releases/assets/${{ steps.fetch_asset_id.outputs.asset_id }} -LJOH 'Accept: application/octet-stream' - - name: Download WooCommerce release zip - working-directory: tmp - run: | - curl https://api.github.com/repos/${{ github.repository }}/releases/assets/${{ steps.fetch_asset_id.outputs.asset_id }} -LJOH 'Accept: application/octet-stream' + unzip woocommerce.zip -d woocommerce + mv woocommerce/woocommerce/* ../package/woocommerce/plugins/woocommerce/ - unzip woocommerce.zip -d woocommerce - mv woocommerce/woocommerce/* ../package/woocommerce/plugins/woocommerce/ + - name: Run tests command. + working-directory: package/woocommerce/plugins/woocommerce + env: + WC_E2E_SCREENSHOTS: 1 + E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} + E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} + run: pnpm nx test-e2e woocommerce - - name: Run tests command. - working-directory: package/woocommerce/plugins/woocommerce - env: - WC_E2E_SCREENSHOTS: 1 - E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} - E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} - run: pnpm nx test-e2e woocommerce + test-plugins: + name: Smoke tests with ${{ matrix.plugin }} plugin installed + runs-on: ubuntu-18.04 + strategy: + fail-fast: false + matrix: + include: + - plugin: 'WooCommerce Payments' + repo: 'automattic/woocommerce-payments' + - plugin: 'WooCommerce PayPal Payments' + repo: 'woocommerce/woocommerce-paypal-payments' + - plugin: 'WooCommerce Shipping & Tax' + repo: 'automattic/woocommerce-services' + - plugin: 'WooCommerce Subscriptions' + repo: WC_SUBSCRIPTIONS_REPO + private: true + - plugin: 'WordPress SEO' # Yoast SEO in the UI, but the slug is wordpress-seo + repo: 'Yoast/wordpress-seo' + - plugin: 'Contact Form 7' + repo: 'takayukister/contact-form-7' + steps: + - name: Create dirs. + run: | + mkdir -p code/woocommerce + mkdir -p package/woocommerce + mkdir -p tmp/woocommerce + mkdir -p node_modules - test-plugins: - name: Smoke tests with ${{ matrix.plugin }} plugin installed - runs-on: ubuntu-18.04 - strategy: - fail-fast: false - matrix: - include: - - plugin: 'WooCommerce Payments' - repo: 'automattic/woocommerce-payments' - - plugin: 'WooCommerce PayPal Payments' - repo: 'woocommerce/woocommerce-paypal-payments' - - plugin: 'WooCommerce Shipping & Tax' - repo: 'automattic/woocommerce-services' - - plugin: 'WooCommerce Subscriptions' - repo: WC_SUBSCRIPTIONS_REPO - private: true - - plugin: 'WordPress SEO' # Yoast SEO in the UI, but the slug is wordpress-seo - repo: 'Yoast/wordpress-seo' - - plugin: 'Contact Form 7' - repo: 'takayukister/contact-form-7' - steps: - - name: Create dirs. - run: | - mkdir -p code/woocommerce - mkdir -p package/woocommerce - mkdir -p tmp/woocommerce - mkdir -p node_modules + - name: Checkout code. + uses: actions/checkout@v2 + with: + path: package/woocommerce + - name: Fetch Asset ID + id: fetch_asset_id + uses: actions/github-script@v5 + env: + RELEASE_ID: ${{ github.event.inputs.release_id }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO: ${{ github.repository }} + with: + script: | + const script = require( './package/woocommerce/.github/workflows/scripts/fetch-asset-id.js' ) + await script({github, context, core}) - - name: Checkout code. - uses: actions/checkout@v2 - with: - path: package/woocommerce - - name: Fetch Asset ID - id: fetch_asset_id - uses: actions/github-script@v5 - env: - RELEASE_ID: ${{ github.event.inputs.release_id }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - REPO: ${{ github.repository }} - with: - script: | - const script = require( './package/woocommerce/.github/workflows/scripts/fetch-asset-id.js' ) - await script({github, context, core}) + - name: Install PNPM and install dependencies + working-directory: package/woocommerce + run: | + npm install -g pnpm + pnpm install - - name: Install PNPM and install dependencies - working-directory: package/woocommerce - run: | - npm install -g pnpm - pnpm install + - name: Load docker images and start containers. + working-directory: package/woocommerce/plugins/woocommerce + env: + LATEST_WP_VERSION_MINUS: ${{ matrix.wp }} + run: pnpm nx docker-up woocommerce - - name: Load docker images and start containers. - working-directory: package/woocommerce/plugins/woocommerce - env: - LATEST_WP_VERSION_MINUS: ${{ matrix.wp }} - run: pnpm nx docker-up woocommerce + - name: Move current directory to code. We will install zip file in this dir later. + run: mv ./package/woocommerce/plugins/woocommerce/* ./code/woocommerce - - name: Move current directory to code. We will install zip file in this dir later. - run: mv ./package/woocommerce/plugins/woocommerce/* ./code/woocommerce + - name: Download WooCommerce release zip + working-directory: tmp + run: | + curl https://api.github.com/repos/${{ github.repository }}/releases/assets/${{ steps.fetch_asset_id.outputs.asset_id }} -LJOH 'Accept: application/octet-stream' - - name: Download WooCommerce release zip - working-directory: tmp - run: | - curl https://api.github.com/repos/${{ github.repository }}/releases/assets/${{ steps.fetch_asset_id.outputs.asset_id }} -LJOH 'Accept: application/octet-stream' + unzip woocommerce.zip -d woocommerce + mv woocommerce/woocommerce/* ../package/woocommerce/plugins/woocommerce/ - unzip woocommerce.zip -d woocommerce - mv woocommerce/woocommerce/* ../package/woocommerce/plugins/woocommerce/ - - - name: Run tests command. - working-directory: package/woocommerce/plugins/woocommerce - env: - WC_E2E_SCREENSHOTS: 1 - E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} - E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} - PLUGIN_REPOSITORY: ${{ matrix.private && secrets[matrix.repo] || matrix.repo }} - PLUGIN_NAME: ${{ matrix.plugin }} - GITHUB_TOKEN: ${{ secrets.E2E_GH_TOKEN }} - run: | - pnpx wc-e2e test:e2e tests/e2e/specs/smoke-tests/upload-plugin.js - pnpx wc-e2e test:e2e + - name: Run tests command. + working-directory: package/woocommerce/plugins/woocommerce + env: + WC_E2E_SCREENSHOTS: 1 + E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} + E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} + PLUGIN_REPOSITORY: ${{ matrix.private && secrets[matrix.repo] || matrix.repo }} + PLUGIN_NAME: ${{ matrix.plugin }} + GITHUB_TOKEN: ${{ secrets.E2E_GH_TOKEN }} + run: | + pnpm exec wc-e2e test:e2e tests/e2e/specs/smoke-tests/upload-plugin.js + pnpm exec wc-e2e test:e2e diff --git a/packages/js/api-core-tests/bin/wc-api-tests.sh b/packages/js/api-core-tests/bin/wc-api-tests.sh index fdbcd78bc70..24054b1bc2b 100755 --- a/packages/js/api-core-tests/bin/wc-api-tests.sh +++ b/packages/js/api-core-tests/bin/wc-api-tests.sh @@ -38,7 +38,7 @@ report() { if [[ $REPORT_EXIT_CODE -eq 0 && $GITHUB_ACTIONS != "true" ]]; then echo "To view the report on your browser, run:" echo "" - echo "pnpx allure open \"$ALLURE_REPORT_DIR\"" + echo "pnpm dlx allure open \"$ALLURE_REPORT_DIR\"" echo "" fi } diff --git a/packages/js/e2e-environment/README.md b/packages/js/e2e-environment/README.md index ae8a3df1506..7093a98bd53 100644 --- a/packages/js/e2e-environment/README.md +++ b/packages/js/e2e-environment/README.md @@ -95,7 +95,7 @@ The E2E environment has the following methods to let us control Jest's overall b **NOTE:** The amount of times failed tests are retried can also be set using the `E2E_RETRY_TIMES` environment variable when executing tests. This can be done using the command below: ``` -E2E_RETRY_TIMES=2 pnpx wc-e2e test:e2e +E2E_RETRY_TIMES=2 pnpm exec wc-e2e test:e2e ``` #### Test Screenshots diff --git a/packages/js/e2e-environment/builtin.md b/packages/js/e2e-environment/builtin.md index 683e4269001..3f76a8a8332 100644 --- a/packages/js/e2e-environment/builtin.md +++ b/packages/js/e2e-environment/builtin.md @@ -52,7 +52,7 @@ wp plugin install wp-mail-logging --activate The container build script supports an initialization script parameter ```shell script -pnpx wc-e2e docker:up plugins/woocommerce/tests/e2e/docker/init-wp-beta.sh +pnpm exec wc-e2e docker:up plugins/woocommerce/tests/e2e/docker/init-wp-beta.sh ``` This script updates WordPress to the latest nightly point release diff --git a/plugins/woocommerce/changelog/update-32508_pnpx_deprecated b/plugins/woocommerce/changelog/update-32508_pnpx_deprecated new file mode 100644 index 00000000000..e8010152980 --- /dev/null +++ b/plugins/woocommerce/changelog/update-32508_pnpx_deprecated @@ -0,0 +1,4 @@ +Significance: patch +Type: update + +Updating instance of now-deprecated pnpx to pnpm dlx/exec diff --git a/plugins/woocommerce/legacy/project.json b/plugins/woocommerce/legacy/project.json index 7043c74e3f2..2ba33de33d6 100644 --- a/plugins/woocommerce/legacy/project.json +++ b/plugins/woocommerce/legacy/project.json @@ -9,7 +9,7 @@ "options": { "commands": [ { - "command": "pnpx grunt assets", + "command": "pnpm exec grunt assets", "forwardAllArgs": false } ], @@ -25,11 +25,11 @@ "options": { "commands": [ { - "command": "pnpx grunt eslint", + "command": "pnpm exec grunt eslint", "forwardAllArgs": false }, { - "command": "pnpx grunt stylelint", + "command": "pnpm exec grunt stylelint", "forwardAllArgs": false } ], diff --git a/plugins/woocommerce/package.json b/plugins/woocommerce/package.json index ac076b7e508..a5a6d8f1909 100644 --- a/plugins/woocommerce/package.json +++ b/plugins/woocommerce/package.json @@ -18,14 +18,14 @@ "build:core": "WC_ADMIN_PHASE=core pnpm run build:feature-config && pnpm nx build woocommerce-admin && pnpm nx build woocommerce-legacy-assets && pnpm run makepot", "build:zip": "pnpm run build", "lint:js": "eslint assets/js --ext=js", - "docker:down": "pnpx wc-e2e docker:down", - "docker:ssh": "pnpx wc-e2e docker:ssh", - "docker:up": "pnpx wc-e2e docker:up", - "test:api": "ALLURE_OUTPUT_DIR=\"$PWD/tests/api\" pnpx wc-api-tests test api", - "make:collection": "pnpx wc-api-tests make:collection", - "test:e2e": "pnpx wc-e2e test:e2e", - "test:e2e-debug": "pnpx wc-e2e test:e2e-debug", - "test:e2e-dev": "pnpx wc-e2e test:e2e-dev", + "docker:down": "pnpm exec wc-e2e docker:down", + "docker:ssh": "pnpm exec wc-e2e docker:ssh", + "docker:up": "pnpm exec wc-e2e docker:up", + "test:api": "ALLURE_OUTPUT_DIR=\"$PWD/tests/api\" pnpm exec wc-api-tests test api", + "make:collection": "pnpm exec wc-api-tests make:collection", + "test:e2e": "pnpm exec wc-e2e test:e2e", + "test:e2e-debug": "pnpm exec wc-e2e test:e2e-debug", + "test:e2e-dev": "pnpm exec wc-e2e test:e2e-dev", "test:unit": "./vendor/bin/phpunit -c ./phpunit.xml", "makepot": "composer run-script makepot", "packages:fix:textdomain": "node ./bin/package-update-textdomain.js" diff --git a/plugins/woocommerce/project.json b/plugins/woocommerce/project.json index 89df485f665..b8614aca846 100644 --- a/plugins/woocommerce/project.json +++ b/plugins/woocommerce/project.json @@ -65,7 +65,7 @@ "watch-assets": { "executor": "@nrwl/workspace:run-commands", "options": { - "command": "pnpx grunt watch", + "command": "pnpm dlx grunt watch", "cwd": "plugins/woocommerce/legacy" } }, diff --git a/plugins/woocommerce/tests/e2e/README.md b/plugins/woocommerce/tests/e2e/README.md index 4ecb3d44d54..f9161e3df56 100644 --- a/plugins/woocommerce/tests/e2e/README.md +++ b/plugins/woocommerce/tests/e2e/README.md @@ -193,7 +193,7 @@ Sometimes tests may fail for different reasons such as network issues, or lost c ``` cd plugins/woocommerce -E2E_RETRY_TIMES=2 pnpx wc-e2e test:e2e +E2E_RETRY_TIMES=2 pnpm exec wc-e2e test:e2e ``` ### How to run tests in debug mode @@ -212,7 +212,7 @@ To run an individual test, use the direct path to the spec. For example: ```bash cd plugins/woocommerce -pnpx wc-e2e test:e2e ./tests/e2e/specs/wp-admin/create-order.test.js +pnpm exec wc-e2e test:e2e ./tests/e2e/specs/wp-admin/create-order.test.js ``` ### How to skip tests