diff --git a/e2e-playwright/scenarios/login.spec.ts b/e2e-playwright/scenarios/login.spec.ts deleted file mode 100644 index afef3d867d1..00000000000 --- a/e2e-playwright/scenarios/login.spec.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { test, expect } from '@grafana/plugin-e2e'; - -test( - 'Scenario test: Can login successfully', - { - tag: ['@scenarios'], - }, - async ({ selectors, page }) => { - await page.goto(selectors.pages.Login.url); - - await page.getByTestId(selectors.pages.Login.username).fill('admin'); - await page.getByTestId(selectors.pages.Login.password).fill('admin'); - await page.getByTestId(selectors.pages.Login.submit).click(); - - await page.getByTestId(selectors.pages.Login.skip).click(); - - await expect(page.getByTestId(selectors.components.NavToolbar.commandPaletteTrigger)).toBeVisible(); - } -); diff --git a/e2e-playwright/smoke-tests-suite/panels-smokescreen.spec.ts b/e2e-playwright/smoke-tests-suite/panels.ts similarity index 62% rename from e2e-playwright/smoke-tests-suite/panels-smokescreen.spec.ts rename to e2e-playwright/smoke-tests-suite/panels.ts index 61e17bec7c6..c65bd0d28ce 100644 --- a/e2e-playwright/smoke-tests-suite/panels-smokescreen.spec.ts +++ b/e2e-playwright/smoke-tests-suite/panels.ts @@ -4,7 +4,7 @@ import { GrafanaBootConfig } from '@grafana/runtime'; test.describe( 'Panels smokescreen', { - tag: ['@smoke'], + tag: ['@acceptance'], }, () => { test('Tests each panel type in the panel edit view to ensure no crash', async ({ @@ -14,6 +14,7 @@ test.describe( }) => { // this test can absolutely take longer than the default 30s timeout test.setTimeout(60000); + // Create new dashboard const dashboardPage = await gotoDashboardPage({}); @@ -30,19 +31,20 @@ test.describe( // Loop through every panel type and ensure no crash for (const [_, panel] of Object.entries(panelTypes)) { - // Skip hidden and deprecated panels - if (!panel.hideFromList && panel.state !== 'deprecated') { - // Open visualization picker - const vizPicker = dashboardPage.getByGrafanaSelector(selectors.components.PanelEditor.toggleVizPicker); - await vizPicker.click(); - await dashboardPage.getByGrafanaSelector(selectors.components.PluginVisualization.item(panel.name)).click(); - - // Verify panel type is selected - await expect(vizPicker).toHaveText(panel.name); - - // Ensure no unexpected error occurred - await expect(page.getByText('An unexpected error happened')).toBeHidden(); + if (panel.hideFromList || panel.state === 'deprecated') { + continue; // Skip hidden and deprecated panels } + + // Select the panel type in the viz picker + const vizPicker = dashboardPage.getByGrafanaSelector(selectors.components.PanelEditor.toggleVizPicker); + await vizPicker.click(); + await dashboardPage.getByGrafanaSelector(selectors.components.PluginVisualization.item(panel.name)).click(); + + // Verify panel type is selected + await expect(vizPicker).toHaveText(panel.name); + + // Ensure no unexpected error occurred + await expect(page.getByText('An unexpected error happened')).toBeHidden(); } }); } diff --git a/e2e-playwright/smoke-tests-suite/1-smoketests.spec.ts b/e2e-playwright/smoke-tests-suite/smoketests.spec.ts similarity index 98% rename from e2e-playwright/smoke-tests-suite/1-smoketests.spec.ts rename to e2e-playwright/smoke-tests-suite/smoketests.spec.ts index a6bea288915..2fcd785b22a 100644 --- a/e2e-playwright/smoke-tests-suite/1-smoketests.spec.ts +++ b/e2e-playwright/smoke-tests-suite/smoketests.spec.ts @@ -5,7 +5,7 @@ import { test, expect } from '@grafana/plugin-e2e'; test.describe( 'Smoke tests', { - tag: ['@smoke'], + tag: ['@acceptance'], }, () => { test('Login, create test data source, create dashboard and panel scenario', async ({ diff --git a/e2e-playwright/unauthenticated/login.spec.ts b/e2e-playwright/unauthenticated/login.spec.ts new file mode 100644 index 00000000000..2cd226134bb --- /dev/null +++ b/e2e-playwright/unauthenticated/login.spec.ts @@ -0,0 +1,40 @@ +import { test, expect } from '@grafana/plugin-e2e'; + +test( + 'Can login successfully', + { + tag: ['@acceptance'], + }, + async ({ selectors, page, grafanaAPICredentials }) => { + test.skip(grafanaAPICredentials.password === 'admin', 'Does not run with default password'); + + await page.goto(selectors.pages.Login.url); + + await page.getByTestId(selectors.pages.Login.username).fill(grafanaAPICredentials.user); + await page.getByTestId(selectors.pages.Login.password).fill(grafanaAPICredentials.password); + + await page.getByTestId(selectors.pages.Login.submit).click(); + + await expect(page.getByTestId(selectors.components.NavToolbar.commandPaletteTrigger)).toBeVisible(); + } +); + +test( + 'Can login successfully and skip password change', + { + tag: ['@acceptance'], + }, + async ({ selectors, page, grafanaAPICredentials }) => { + test.skip(grafanaAPICredentials.password !== 'admin', 'Only runs with the default password'); + + await page.goto(selectors.pages.Login.url); + + await page.getByTestId(selectors.pages.Login.username).fill(grafanaAPICredentials.user); + await page.getByTestId(selectors.pages.Login.password).fill(grafanaAPICredentials.password); + + await page.getByTestId(selectors.pages.Login.submit).click(); + await page.getByTestId(selectors.pages.Login.skip).click(); + + await expect(page.getByTestId(selectors.components.NavToolbar.commandPaletteTrigger)).toBeVisible(); + } +); diff --git a/package.json b/package.json index 34741ebf2a2..931e39234b2 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "e2e:enterprise:debug": "./e2e/start-and-run-suite enterprise debug", "e2e:playwright": "yarn playwright test", "e2e:playwright:storybook": "yarn playwright test -c playwright.storybook.config.ts", + "e2e:acceptance": "yarn playwright test --grep @acceptance", "e2e:storybook": "PORT=9001 ./e2e/run-suite storybook true", "e2e:plugin:build": "nx run-many -t build --projects='@test-plugins/*'", "e2e:plugin:build:dev": "nx run-many -t dev --projects='@test-plugins/*' --maxParallel=100", diff --git a/playwright.config.ts b/playwright.config.ts index b569bc6feea..a3388e20c5e 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -205,8 +205,8 @@ export default defineConfig({ dependencies: ['authenticate'], }, { - name: 'scenarios', - testDir: path.join(testDirRoot, '/scenarios'), + name: 'unauthenticated', + testDir: path.join(testDirRoot, '/unauthenticated'), use: { ...devices['Desktop Chrome'], },