All in dirs #138
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: e2e tests | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
env: | |
WASP_TELEMETRY_DISABLE: 1 | |
WASP_VERSION: 0.13.2 | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the repo | |
uses: actions/checkout@v4 | |
- name: Setup Node.js | |
id: setup-node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20' | |
- name: Install Wasp | |
run: curl -sSL https://get.wasp-lang.dev/installer.sh | sh -s -- -v ${{ env.WASP_VERSION }} | |
- name: Docker setup | |
uses: docker/setup-buildx-action@v3 | |
# In order for the app to run in the dev mode we need to set the required env vars even if they aren't actually used by the app. | |
# This step sets mock env vars in order to pass the validation steps so the app can run | |
# in the CI environment. For env vars that are actually used in tests and therefore need real values, we set them in | |
# the GitHub secrets settings and access them in a step below. | |
- name: Set required wasp app env vars to mock values | |
run: | | |
cd app | |
cp .env.server.example .env.server && cp .env.client.example .env.client | |
- name: Cache global node modules | |
uses: actions/cache@v4 | |
with: | |
path: ~/.npm | |
key: node-modules-${{ runner.os }}-${{ hashFiles('app/package-lock.json') }}-${{ hashFiles('e2e-tests/package-lock.json') }}-wasp${{ env.WASP_VERSION }}-node${{ steps.setup-node.outputs.node-version }} | |
restore-keys: | | |
node-modules-${{ runner.os }}- | |
- name: Install Node.js dependencies for Playwright tests | |
if: steps.cache-e2e-tests.outputs.cache-hit != 'true' | |
run: | | |
cd e2e-tests | |
npm ci | |
- name: Store Playwright's Version | |
run: | | |
cd e2e-tests | |
PLAYWRIGHT_VERSION=$(npm ls @playwright/test | grep @playwright | sed 's/.*@//') | |
echo "Playwright's Version: $PLAYWRIGHT_VERSION" | |
echo "PLAYWRIGHT_VERSION=$PLAYWRIGHT_VERSION" >> $GITHUB_ENV | |
- name: Cache Playwright Browsers for Playwright's Version | |
id: cache-playwright-browsers | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cache/ms-playwright | |
key: playwright-browsers-${{ env.PLAYWRIGHT_VERSION }}-${{ runner.os }} | |
- name: Set up Playwright | |
if: steps.cache-playwright-browsers.outputs.cache-hit != 'true' | |
run: | | |
cd e2e-tests | |
npx playwright install --with-deps | |
- name: Install Stripe CLI | |
run: | | |
curl -s https://packages.stripe.dev/api/security/keypair/stripe-cli-gpg/public | gpg --dearmor | sudo tee /usr/share/keyrings/stripe.gpg | |
echo "deb [signed-by=/usr/share/keyrings/stripe.gpg] https://packages.stripe.dev/stripe-cli-debian-local stable main" | sudo tee -a /etc/apt/sources.list.d/stripe.list | |
sudo apt update | |
sudo apt install stripe | |
# For Stripe webhooks to work in development, we need to run the Stripe CLI to listen for webhook events. | |
# The Stripe CLI will receive the webhook events from Stripe test payments and | |
# forward them to our local server so that we can test the payment flow in our e2e tests. | |
- name: Run Stripe CLI to listen for webhooks | |
env: | |
STRIPE_DEVICE_NAME: ${{ secrets.STRIPE_DEVICE_NAME }} | |
run: | | |
stripe listen --api-key ${{ secrets.STRIPE_KEY }} --forward-to localhost:3001/stripe-webhook & | |
- name: Run Playwright tests | |
env: | |
# The e2e tests are testing parts of the app that need certain env vars, so we need to access them here. | |
# These secretes can be set in your GitHub repo settings, e.g. https://github.com/<account>/<repo>/settings/secrets/actions | |
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
STRIPE_KEY: ${{ secrets.STRIPE_KEY }} | |
STRIPE_WEBHOOK_SECRET: ${{ secrets.STRIPE_WEBHOOK_SECRET }} | |
HOBBY_SUBSCRIPTION_PRICE_ID: ${{ secrets.HOBBY_SUBSCRIPTION_PRICE_ID }} | |
PRO_SUBSCRIPTION_PRICE_ID: ${{ secrets.PRO_SUBSCRIPTION_PRICE_ID }} | |
CREDITS_PRICE_ID: ${{ secrets.CREDITS_PRICE_ID }} | |
SKIP_EMAIL_VERIFICATION_IN_DEV: true | |
run: | | |
cd e2e-tests | |
npm run e2e:playwright |