diff --git a/.circleci/config.yml b/.circleci/config.yml index c164167..a6977ff 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -118,6 +118,54 @@ jobs: else echo "Skipping translation pipeline." fi + - run: + name: Collect build artifacts + command: | + mkdir -p .release + cp gf-entries-in-excel-*.zip .release/ + - store_artifacts: + path: .release + destination: release + - persist_to_workspace: + root: /home/circleci + paths: + - plugin/.release + - plugin/gf-entries-in-excel-*.zip + + run_post_build_smoke: + <<: *default_job_config + machine: + image: default + docker_layer_caching: true + resource_class: xlarge + steps: + - attach_workspace: + at: /home/circleci + - run: + name: Post-build smoke + # Unzips .release/*.zip, restores dev deps via gktools' Docker composer, + # boots wp-env with retry, runs `playwright test --grep=@smoke` against + # the built artifact. See @gravitykit/e2e-bootstrap README for details. + command: | + npx @gravitykit/e2e-bootstrap smoke \ + --composer-cmd "npx @gravitykit/gktools composer install" + - store_artifacts: + path: tests/E2E/results + - store_artifacts: + path: tests/E2E/report + - store_test_results: + path: tests/E2E/results/junit.xml + + publish_release: + <<: *default_job_config + steps: + - attach_workspace: + at: /home/circleci + - run: + name: Configure git + command: | + git config user.email "support@gravitykit.com" + git config user.name "GravityKit - CI" - run: name: Create GitHub release command: npx @gravitykit/gktools release @@ -127,14 +175,6 @@ jobs: if ! git log -1 --pretty=%B | grep -iq "\[skip notify\]"; then npx @gravitykit/gktools announce fi - - run: - name: Collect build artifacts - command: | - mkdir -p .release - cp gf-entries-in-excel-*.zip .release/ 2>/dev/null || true - - store_artifacts: - path: .release - destination: release workflows: version: 2 @@ -148,3 +188,11 @@ workflows: <<: *context requires: - prepare + - run_post_build_smoke: + <<: *context + requires: + - build_package_release + - publish_release: + <<: *context + requires: + - run_post_build_smoke diff --git a/package-lock.json b/package-lock.json index 834f96e..435a8ec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "GPL-2.0", "devDependencies": { - "@gravitykit/e2e-bootstrap": "^1.0.0", + "@gravitykit/e2e-bootstrap": "^1.1.0", "@playwright/test": "1.56.1", "@wordpress/env": "^10.0.0", "grunt": "^1.5.3", @@ -18,15 +18,18 @@ } }, "node_modules/@gravitykit/e2e-bootstrap": { - "version": "1.0.0", - "resolved": "https://npm.pkg.github.com/download/@gravitykit/e2e-bootstrap/1.0.0/4f5bef34f2b159367dbc43bbb46e02e1de39f579", - "integrity": "sha512-fSsX3g5iLy3p6UuuV8qsihqlqdq6LsxkcmQGRC90xd3s85Ve1GwSkC766XmvWIGHtTTZBP0WwJmgykrLJTSAfw==", + "version": "1.1.0", + "resolved": "https://npm.pkg.github.com/download/@gravitykit/e2e-bootstrap/1.1.0/d14bcc5d6e2b8e4a37e0ae43497895a41710473c", + "integrity": "sha512-TCUlswVxxcOI7ItXeO/3eXZyJhLzxZk9hYuekZW/GdU+Arf1GPbn6Pj1DGbGU9Cgg7rmDf9Qrl9Xas6nf7FNWQ==", "dev": true, "license": "MIT", "dependencies": { "@gravitykit/e2e-fixtures": "^1.2.0", "dotenv": "^16.4.5" }, + "bin": { + "e2e-bootstrap": "bin/cli.js" + }, "peerDependencies": { "@playwright/test": ">=1.56.0", "@wordpress/env": ">=10.0.0" diff --git a/package.json b/package.json index 2ad45d7..ce61341 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "tests:e2e:run": "playwright test --config=tests/E2E/setup/playwright.config.js" }, "devDependencies": { - "@gravitykit/e2e-bootstrap": "^1.0.0", + "@gravitykit/e2e-bootstrap": "^1.1.0", "@playwright/test": "1.56.1", "@wordpress/env": "^10.0.0", "grunt": "^1.5.3", diff --git a/tests/E2E/tests/activation.spec.js b/tests/E2E/tests/activation.spec.js index bead7b7..e8d2d66 100644 --- a/tests/E2E/tests/activation.spec.js +++ b/tests/E2E/tests/activation.spec.js @@ -1,6 +1,6 @@ const { test, expect } = require('@playwright/test'); -test.describe('GravityExport Lite — Activation Smoke Test', () => { +test.describe('GravityExport Lite — Activation Smoke Test @smoke', () => { test('Plugin activates without fatal PHP errors', async ({ page } ) => { await page.goto('/wp-admin/plugins.php');