From 00d223991dddfc54c59de99a36f4a738f5c8128a Mon Sep 17 00:00:00 2001 From: Sam Lord Date: Fri, 2 Dec 2022 15:46:59 +0000 Subject: [PATCH] Improved browser test CI integration refs: https://github.com/TryGhost/Toolbox/issues/481 --- .github/workflows/browser-tests.yml | 29 +++++++++++++++++-- ghost/core/playwright.config.js | 2 +- .../test/e2e-browser/utils/global-setup.js | 2 +- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/.github/workflows/browser-tests.yml b/.github/workflows/browser-tests.yml index 35ee99a757..54643cd1da 100644 --- a/.github/workflows/browser-tests.yml +++ b/.github/workflows/browser-tests.yml @@ -6,8 +6,20 @@ on: pull_request: workflow_dispatch: inputs: + environment: + description: 'Environment to run tests against' + type: environment + required: true site_url: - description: 'Site URL to test, or blank for local' + description: 'Site URL (override)' + required: false + type: string + owner_email: + description: 'Owner email (override)' + required: false + type: string + owner_password: + description: 'Owner password (override)' required: false type: string jobs: @@ -44,10 +56,21 @@ jobs: working-directory: ghost/admin run: yarn build:prod - - name: Run Playwright tests + - name: Run Playwright tests on a remote site + if: github.event.inputs.environment == 'browser-tests-staging' run: yarn test:browser env: - TEST_URL: ${{ github.event.inputs.site_url }} + TEST_URL: ${{ github.event.inputs.site_url || secrets.TEST_URL }} + TEST_OWNER_EMAIL: ${{ github.event.inputs.owner_email || secrets.TEST_OWNER_EMAIL }} + TEST_OWNER_PASSWORD: ${{ github.event.inputs.owner_password || secrets.TEST_OWNER_PASSWORD }} + + - name: Run Playwright tests locally + if: github.event.inputs.environment == 'browser-tests-local' + run: yarn test:browser + env: + STRIPE_PUBLISHABLE_KEY: ${{ secrets.STRIPE_PUBLISHABLE_KEY }} + STRIPE_SECRET_KEY: ${{ secrets.STRIPE_SECRET_KEY }} + STRIPE_ACCOUNT_ID: ${{ secrets.STRIPE_ACCOUNT_ID }} - uses: actions/upload-artifact@v3 if: always() diff --git a/ghost/core/playwright.config.js b/ghost/core/playwright.config.js index 1dac8fbd20..56a01ebfc6 100644 --- a/ghost/core/playwright.config.js +++ b/ghost/core/playwright.config.js @@ -1,7 +1,7 @@ const {execSync} = require('child_process'); const getWebhookSecret = () => { - const command = `stripe listen --print-secret ${process.env.CI ? `--api-key ${process.env.STRIPE_API_KEY}` : ''}`.trim(); + const command = `stripe listen --print-secret ${process.env.CI ? `--api-key ${process.env.STRIPE_SECRET_KEY}` : ''}`.trim(); const webhookSecret = execSync(command); return webhookSecret.toString().trim(); }; diff --git a/ghost/core/test/e2e-browser/utils/global-setup.js b/ghost/core/test/e2e-browser/utils/global-setup.js index 57767d9e9f..684e8d73b1 100644 --- a/ghost/core/test/e2e-browser/utils/global-setup.js +++ b/ghost/core/test/e2e-browser/utils/global-setup.js @@ -7,7 +7,7 @@ const {chromium} = require('@playwright/test'); const models = require('../../../core/server/models'); const startWebhookServer = () => { - const command = `stripe listen --forward-to ${config.getSiteUrl()}/members/webhooks/stripe/ ${process.env.CI ? `--api-key ${process.env.STRIPE_API_KEY}` : ''}`.trim(); + const command = `stripe listen --forward-to ${config.getSiteUrl()}/members/webhooks/stripe/ ${process.env.CI ? `--api-key ${process.env.STRIPE_SECRET_KEY}` : ''}`.trim(); spawn(command.split(' ')[0], command.split(' ').slice(1)); };