diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 988b46a2..5e995ddd 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -9,25 +9,6 @@ on: browsers: required: true type: string - run-expensive-tests: - description: > - Whether or not to run Playwright tests that're annotated as "@expensive" - (ex. tests that incur costs such as sending SMSes via Twilio/Mailslurp) - required: true - type: boolean - secrets: - # NOTE: these are only required for the "expensive" e2e tests, which are only run via - # a daily GitHub Actions cron job (see .github/workflows/daily-e2e-tests.yml) - TWILIO_ACCOUNT_SID: - required: false - TWILIO_AUTH_TOKEN: - required: false - TWILIO_PHONE_NUMBER: - required: false - TWILIO_VERIFY_SID: - required: false - MAILSLURP_API_KEY: - required: false jobs: end-to-end-tests: @@ -111,63 +92,6 @@ jobs: working-directory: grafana-plugin run: pnpm playwright install - # ---------- Expensive e2e tests steps start ----------- - - name: Install Go - uses: actions/setup-go@v4 - with: - go-version: "1.21.5" - - - name: Install Mage - run: go install github.com/magefile/mage@v1.15.0 - - - name: Get Vault secrets - if: inputs.run-expensive-tests - id: get-secrets - uses: grafana/shared-workflows/actions/get-vault-secrets@b7d33d6a98dc9cf332674c6cdebe92b8bcb05670 #v0.3.0 - with: - repo_secrets: | - GH_APP_ID=github-app:app-id - GH_APP_INSTALLATION_ID=github-app:app-installation-id - GH_APP_PRIVATE_KEY=github-app:private-key - - - name: Generate Github App token - if: inputs.run-expensive-tests - id: generate-token - uses: actions/create-github-app-token@v1 - with: - app-id: ${{ env.GH_APP_ID }} - private-key: ${{ env.GH_APP_PRIVATE_KEY }} - owner: grafana - repositories: "ops-devenv,gops-labels" - - - name: Clone other repos needed for cross-plugin e2e tests - if: inputs.run-expensive-tests - shell: bash - run: | - cd .. - git clone https://x-access-token:${{ steps.generate-token.outputs.token }}@github.com/grafana/ops-devenv.git - git clone https://x-access-token:${{ steps.generate-token.outputs.token }}@github.com/grafana/gops-labels.git - - - name: Tilt CI - Expensive E2E tests - if: inputs.run-expensive-tests - shell: bash - env: - E2E_TESTS_CMD: "cd ../../grafana-plugin && pnpm test:e2e-expensive" - GRAFANA_VERSION: ${{ inputs.grafana_version }} - GF_FEATURE_TOGGLES_ENABLE: "externalServiceAccounts" - ONCALL_API_URL: "http://oncall-dev-engine:8080" - GRAFANA_ADMIN_USERNAME: "irm" - GRAFANA_ADMIN_PASSWORD: "irm" - BROWSERS: ${{ inputs.browsers }} - MAILSLURP_API_KEY: ${{ secrets.MAILSLURP_API_KEY }} - TWILIO_ACCOUNT_SID: ${{ secrets.TWILIO_ACCOUNT_SID }} - TWILIO_AUTH_TOKEN: ${{ secrets.TWILIO_AUTH_TOKEN }} - # wrapping single quotes are required to prevent stripping leading "+" from the number - TWILIO_PHONE_NUMBER: '"${{ secrets.TWILIO_PHONE_NUMBER }}"' - TWILIO_VERIFY_SID: ${{ secrets.TWILIO_VERIFY_SID }} - run: cd ../ops-devenv && tilt ci gops-labels oncall - # ---------- Expensive e2e tests steps end ----------- - - name: Tilt CI - standard E2E tests shell: bash env: diff --git a/.github/workflows/linting-and-tests.yml b/.github/workflows/linting-and-tests.yml index c938066b..50eeab0a 100644 --- a/.github/workflows/linting-and-tests.yml +++ b/.github/workflows/linting-and-tests.yml @@ -335,5 +335,4 @@ jobs: fail-fast: false with: grafana_version: ${{ matrix.grafana_version }} - run-expensive-tests: false browsers: "chromium" diff --git a/grafana-plugin/e2e-tests/alerts/sms.test.ts b/grafana-plugin/e2e-tests/alerts/sms.test.ts deleted file mode 100644 index 97caa4f8..00000000 --- a/grafana-plugin/e2e-tests/alerts/sms.test.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { test, expect } from '../fixtures'; -import { createEscalationChain, EscalationStep } from '../utils/escalationChain'; -import { generateRandomValue } from '../utils/forms'; -import { createIntegrationAndSendDemoAlert } from '../utils/integrations'; -import { waitForSms } from '../utils/phone'; -import { configureUserNotificationSettings, verifyUserPhoneNumber } from '../utils/userSettings'; - -test('we can verify our phone number + receive an SMS alert @expensive', async ({ adminRolePage }) => { - test.slow(); - - const { page, userName } = adminRolePage; - const escalationChainName = generateRandomValue(); - const integrationName = generateRandomValue(); - - await verifyUserPhoneNumber(page); - await configureUserNotificationSettings(page, 'SMS'); - - await createEscalationChain(page, escalationChainName, EscalationStep.NotifyUsers, userName); - await createIntegrationAndSendDemoAlert(page, integrationName, escalationChainName); - - // wait for the SMS alert notification to arrive - const smsAlertNotification = await waitForSms(); - - expect(smsAlertNotification).toContain('OnCall'); - expect(smsAlertNotification).toContain('Alert group'); -}); diff --git a/grafana-plugin/e2e-tests/labels/createNewLabelKeysAndValues.test.ts b/grafana-plugin/e2e-tests/labels/createNewLabelKeysAndValues.test.ts deleted file mode 100644 index 006c55f1..00000000 --- a/grafana-plugin/e2e-tests/labels/createNewLabelKeysAndValues.test.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { test, expect } from '../fixtures'; -import { isGrafanaVersionGreaterThan } from '../utils/constants'; -import { clickButton, generateRandomValidLabel, openDropdown } from '../utils/forms'; -import { openCreateIntegrationModal } from '../utils/integrations'; -import { goToOnCallPage } from '../utils/navigation'; - -test.skip( - () => isGrafanaVersionGreaterThan('10.3.0'), - 'Above 10.3 labels need enterprise version to validate permissions' -); - -// TODO: This test is flaky on CI. Undo skipping once we can test labels locally -test.skip('New label keys and labels can be created @expensive', async ({ adminRolePage }) => { - const { page } = adminRolePage; - await goToOnCallPage(page, 'integrations'); - await openCreateIntegrationModal(page); - const NEW_LABEL_KEY = generateRandomValidLabel(); - const NEW_LABEL_VALUE = generateRandomValidLabel(); - - await page - .getByTestId('create-integration-modal') - .getByTestId('integration-display-name') - .filter({ hasText: 'Webhook' }) - .first() - .click(); - await clickButton({ page, buttonText: /^Add Labels$/ }); - - await openDropdown({ page, text: /^Select key$/ }); - await page.keyboard.insertText(NEW_LABEL_KEY); - await page.getByText('Hit enter to add').waitFor(); - await page.keyboard.press('Enter'); - - await page.waitForTimeout(1000); - - await openDropdown({ page, text: /^Select value$/ }); - await page.keyboard.insertText(NEW_LABEL_VALUE); - await page.getByText('Hit enter to add').waitFor(); - await page.keyboard.press('Enter'); - - await expect(page.getByText(NEW_LABEL_KEY)).toBeVisible(); - await expect(page.getByText(NEW_LABEL_VALUE)).toBeVisible(); -});