From c754585e47b54ee4e8b67158805d218ba0c37539 Mon Sep 17 00:00:00 2001 From: BOHEUS <56270748+BOHEUS@users.noreply.github.com> Date: Tue, 17 Dec 2024 13:56:00 +0100 Subject: [PATCH] Basic test verifying if demo account is working properly (#8442) --- .github/workflows/ci-demo-check.yml | 59 +++++++++++++++++++ .../twenty-e2e-testing/playwright.config.ts | 11 +++- .../tests/{ => all}/companies.spec.ts | 2 +- .../tests/{ => all}/workspaces.spec.ts | 2 +- .../tests/demo/demo_basic.spec.ts | 15 +++++ 5 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/ci-demo-check.yml rename packages/twenty-e2e-testing/tests/{ => all}/companies.spec.ts (91%) rename packages/twenty-e2e-testing/tests/{ => all}/workspaces.spec.ts (98%) create mode 100644 packages/twenty-e2e-testing/tests/demo/demo_basic.spec.ts diff --git a/.github/workflows/ci-demo-check.yml b/.github/workflows/ci-demo-check.yml new file mode 100644 index 0000000000..9f6af7d7a6 --- /dev/null +++ b/.github/workflows/ci-demo-check.yml @@ -0,0 +1,59 @@ +name: CI demo check +on: + schedule: + - cron: '30 7,19 * * *' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + test: + timeout-minutes: 15 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: actions/setup-node@v4 + with: + node-version: lts/* + + - name: Install dependencies + uses: ./.github/workflows/actions/yarn-install + + - name: Install Playwright Browsers + run: yarn playwright install --with-deps + + - name: Run Playwright tests + id: test + run: yarn playwright test --grep @demo-only + + - name: Upload report after tests + uses: actions/upload-artifact@v4 + with: + name: playwright-report + path: playwright-report/ + retention-days: 90 + + - name: Send Discord notification + env: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} + uses: Ilshidur/action-discord@0.3.2 + with: + args: 'Demo check ${{ steps.test.outcome }} - check ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}' + + - name: Send email if demo is not working + if: steps.test.outcome == 'failure' + uses: dawidd6/action-send-mail@v3.12.0 + with: + connection_url: ${{ secrets.MAIL_CONNECTION }} + server_address: smtp.gmail.com + server_port: 465 + secure: true + username: ${{ secrets.MAIL_USERNAME }} + subject: 'Demo is not working' + from: 'Github CI Demo check' + to: ${{ secrets.RECIPIENTS }} + body: 'Link' + priority: high \ No newline at end of file diff --git a/packages/twenty-e2e-testing/playwright.config.ts b/packages/twenty-e2e-testing/playwright.config.ts index f3aafad006..df73a47e3a 100644 --- a/packages/twenty-e2e-testing/playwright.config.ts +++ b/packages/twenty-e2e-testing/playwright.config.ts @@ -34,12 +34,19 @@ export default defineConfig({ expect: { timeout: 5000, }, - reporter: [['html', { open: 'never' }]], + reporter: process.env.CI ? 'github' : 'list', projects: [ { name: 'Login setup', testMatch: /login\.setup\.ts/, // finds all tests matching this regex, in this case only 1 test should be found }, + { + name: 'Demo check', + use: { + ...devices['Desktop Chrome'], + }, + testMatch: /demo\/demo_basic\.spec\.ts/, + }, { name: 'chromium', use: { @@ -47,6 +54,7 @@ export default defineConfig({ storageState: path.resolve(__dirname, '.auth', 'user.json'), // takes saved cookies from directory }, dependencies: ['Login setup'], // forces to run login setup before running tests from this project - CASE SENSITIVE + testMatch: /all\/.+\.spec\.ts/, }, { name: 'firefox', @@ -55,6 +63,7 @@ export default defineConfig({ storageState: path.resolve(__dirname, '.auth', 'user.json'), }, dependencies: ['Login setup'], + testMatch: /all\/.+\.spec\.ts/, }, { name: 'Authentication', diff --git a/packages/twenty-e2e-testing/tests/companies.spec.ts b/packages/twenty-e2e-testing/tests/all/companies.spec.ts similarity index 91% rename from packages/twenty-e2e-testing/tests/companies.spec.ts rename to packages/twenty-e2e-testing/tests/all/companies.spec.ts index 1aa53d6132..d372b214af 100644 --- a/packages/twenty-e2e-testing/tests/companies.spec.ts +++ b/packages/twenty-e2e-testing/tests/all/companies.spec.ts @@ -1,4 +1,4 @@ -import { test, expect } from '../lib/fixtures/screenshot'; +import { test, expect } from '../../lib/fixtures/screenshot'; test.describe('Basic check', () => { test('Checking if table in Companies is visible', async ({ page }) => { diff --git a/packages/twenty-e2e-testing/tests/workspaces.spec.ts b/packages/twenty-e2e-testing/tests/all/workspaces.spec.ts similarity index 98% rename from packages/twenty-e2e-testing/tests/workspaces.spec.ts rename to packages/twenty-e2e-testing/tests/all/workspaces.spec.ts index f8cff58f54..ebe79f8e23 100644 --- a/packages/twenty-e2e-testing/tests/workspaces.spec.ts +++ b/packages/twenty-e2e-testing/tests/all/workspaces.spec.ts @@ -1,5 +1,5 @@ import { test, expect } from '@playwright/test'; -import { sh } from '../drivers/shell_driver'; +import { sh } from '../../drivers/shell_driver'; test.describe('', () => { test('Testing logging', async ({ page }) => { diff --git a/packages/twenty-e2e-testing/tests/demo/demo_basic.spec.ts b/packages/twenty-e2e-testing/tests/demo/demo_basic.spec.ts new file mode 100644 index 0000000000..61f17bcd40 --- /dev/null +++ b/packages/twenty-e2e-testing/tests/demo/demo_basic.spec.ts @@ -0,0 +1,15 @@ +import { test, expect } from '@playwright/test'; + +test('Check if demo account is working properly @demo-only', async ({ + page, +}) => { + await page.goto('https://demo.twenty.com/'); + await page.getByRole('button', { name: 'Continue With Email' }).click(); + await page.getByRole('button', { name: 'Continue', exact: true }).click(); + await page.getByRole('button', { name: 'Sign in' }).click(); + await expect(page.getByText('Welcome to Twenty')).not.toBeVisible(); + await page.waitForTimeout(5000); + await expect(page.getByText('Server’s on a coffee break')).not.toBeVisible({ + timeout: 5000, + }); +});