diff --git a/e2e/plugin-e2e/plugin-e2e-api-tests/as-admin-user/alerting.spec.ts b/e2e/plugin-e2e/plugin-e2e-api-tests/as-admin-user/alerting.spec.ts new file mode 100644 index 00000000000..531cb85e091 --- /dev/null +++ b/e2e/plugin-e2e/plugin-e2e-api-tests/as-admin-user/alerting.spec.ts @@ -0,0 +1,39 @@ +import * as e2e from '@grafana/e2e-selectors'; +import { expect, test } from '@grafana/plugin-e2e'; + +test('should evaluate to false if entire request returns 500', async ({ page, alertRuleEditPage, selectors }) => { + await alertRuleEditPage.alertRuleNameField.fill('Test Alert Rule'); + + // remove the default query + const queryA = alertRuleEditPage.getAlertRuleQueryRow('A'); + await alertRuleEditPage + .getByGrafanaSelector(selectors.components.QueryEditorRow.actionButton('Remove query'), { + root: queryA.locator, + }) + .click(); + await expect(alertRuleEditPage.evaluate()).not.toBeOK(); +}); + +test('should evaluate to false if entire request returns 200 but partial query result is invalid', async ({ + page, + alertRuleEditPage, +}) => { + await alertRuleEditPage.alertRuleNameField.fill('Test Alert Rule'); + + //add working query + const queryA = alertRuleEditPage.getAlertRuleQueryRow('A'); + await queryA.datasource.set('gdev-prometheus'); + await queryA.locator.getByLabel('Code').click(); + await page.waitForFunction(() => window.monaco); + await queryA.getByGrafanaSelector(e2e.selectors.components.QueryField.container).click(); + await page.keyboard.insertText('topk(5, max(scrape_duration_seconds) by (job))'); + + //add broken query + const newQuery = await alertRuleEditPage.clickAddQueryRow(); + await newQuery.datasource.set('gdev-prometheus'); + await newQuery.locator.getByLabel('Code').click(); + await newQuery.getByGrafanaSelector(e2e.selectors.components.QueryField.container).click(); + await page.keyboard.insertText('topk(5,'); + + await expect(alertRuleEditPage.evaluate()).not.toBeOK(); +}); diff --git a/package.json b/package.json index 46d46ddf051..d012e5d4771 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "@emotion/eslint-plugin": "11.11.0", "@grafana/eslint-config": "7.0.0", "@grafana/eslint-plugin": "link:./packages/grafana-eslint-rules", - "@grafana/plugin-e2e": "1.3.2", + "@grafana/plugin-e2e": "1.4.0", "@grafana/tsconfig": "^1.3.0-rc1", "@manypkg/get-packages": "^2.2.0", "@playwright/test": "1.44.1", diff --git a/yarn.lock b/yarn.lock index a61ec50de55..e42cada06fb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -285,7 +285,14 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.0, @babel/helper-plugin-utils@npm:^7.24.5, @babel/helper-plugin-utils@npm:^7.24.7, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.0, @babel/helper-plugin-utils@npm:^7.24.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": + version: 7.24.5 + resolution: "@babel/helper-plugin-utils@npm:7.24.5" + checksum: 10/6e11ca5da73e6bd366848236568c311ac10e433fc2034a6fe6243af28419b07c93b4386f87bbc940aa058b7c83f370ef58f3b0fd598106be040d21a3d1c14276 + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-plugin-utils@npm:7.24.7" checksum: 10/dad51622f0123fdba4e2d40a81a6b7d6ef4b1491b2f92fd9749447a36bde809106cf117358705057a2adc8fd73d5dc090222e0561b1213dae8601c8367f5aac8 @@ -2450,7 +2457,16 @@ __metadata: languageName: node linkType: hard -"@floating-ui/dom@npm:^1.0.0, @floating-ui/dom@npm:^1.0.1": +"@floating-ui/core@npm:^1.6.0": + version: 1.6.0 + resolution: "@floating-ui/core@npm:1.6.0" + dependencies: + "@floating-ui/utils": "npm:^0.2.1" + checksum: 10/d6a47cacde193cd8ccb4c268b91ccc4ca254dffaec6242b07fd9bcde526044cc976d27933a7917f9a671de0a0e27f8d358f46400677dbd0c8199de293e9746e1 + languageName: node + linkType: hard + +"@floating-ui/dom@npm:^1.0.0": version: 1.6.5 resolution: "@floating-ui/dom@npm:1.6.5" dependencies: @@ -2460,6 +2476,16 @@ __metadata: languageName: node linkType: hard +"@floating-ui/dom@npm:^1.0.1": + version: 1.6.1 + resolution: "@floating-ui/dom@npm:1.6.1" + dependencies: + "@floating-ui/core": "npm:^1.6.0" + "@floating-ui/utils": "npm:^0.2.1" + checksum: 10/c010feb55be37662eb4cc8d0a22e21359c25247bbdcd9557617fd305cf08c8f020435b17e4b4f410201ba9abe3a0dd96b5c42d56e85f7a5e11e7d30b85afc116 + languageName: node + linkType: hard + "@floating-ui/react-dom@npm:^2.1.0": version: 2.1.0 resolution: "@floating-ui/react-dom@npm:2.1.0" @@ -2486,7 +2512,7 @@ __metadata: languageName: node linkType: hard -"@floating-ui/utils@npm:^0.2.0": +"@floating-ui/utils@npm:^0.2.0, @floating-ui/utils@npm:^0.2.1": version: 0.2.1 resolution: "@floating-ui/utils@npm:0.2.1" checksum: 10/33c9ab346e7b05c5a1e6a95bc902aafcfc2c9d513a147e2491468843bd5607531b06d0b9aa56aa491cbf22a6c2495c18ccfc4c0344baec54a689a7bb8e4898d6 @@ -3352,16 +3378,16 @@ __metadata: languageName: unknown linkType: soft -"@grafana/plugin-e2e@npm:1.3.2": - version: 1.3.2 - resolution: "@grafana/plugin-e2e@npm:1.3.2" +"@grafana/plugin-e2e@npm:1.4.0": + version: 1.4.0 + resolution: "@grafana/plugin-e2e@npm:1.4.0" dependencies: semver: "npm:^7.5.4" uuid: "npm:^9.0.1" yaml: "npm:^2.3.4" peerDependencies: "@playwright/test": ^1.41.2 - checksum: 10/a5d19e529c24f566f97d2d0da216b75a0c7918ee0a0d4c55760e76117c74c64e9e4e487643c6850b15dc769abaa5781ce98a2edd28dd25a23228aeaedd8a644a + checksum: 10/3e928e290ed32a6ba80ecd710971a8aeaaaccabe072fdfda2084efd6fe956f3fd4ace486f06eebbad6e26ca8926392413c74147a05541c8cd11006fbc6e7efbb languageName: node linkType: hard @@ -5719,7 +5745,7 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-portal@npm:1.0.4, @radix-ui/react-portal@npm:^1.0.1": +"@radix-ui/react-portal@npm:1.0.4": version: 1.0.4 resolution: "@radix-ui/react-portal@npm:1.0.4" dependencies: @@ -5739,6 +5765,26 @@ __metadata: languageName: node linkType: hard +"@radix-ui/react-portal@npm:^1.0.1": + version: 1.0.3 + resolution: "@radix-ui/react-portal@npm:1.0.3" + dependencies: + "@babel/runtime": "npm:^7.13.10" + "@radix-ui/react-primitive": "npm:1.0.3" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10/d352bcd6ad65eb43c9e0d72d0755c2aae85e03fb287770866262be3a2d5302b2885aee3cd99f2bbf62ecd14fcb1460703f1dcdc40351f77ad887b931c6f0012a + languageName: node + linkType: hard + "@radix-ui/react-presence@npm:1.0.1": version: 1.0.1 resolution: "@radix-ui/react-presence@npm:1.0.1" @@ -17095,7 +17141,7 @@ __metadata: "@grafana/lezer-logql": "npm:0.2.4" "@grafana/monaco-logql": "npm:^0.0.7" "@grafana/o11y-ds-frontend": "workspace:*" - "@grafana/plugin-e2e": "npm:1.3.2" + "@grafana/plugin-e2e": "npm:1.4.0" "@grafana/prometheus": "workspace:*" "@grafana/runtime": "workspace:*" "@grafana/saga-icons": "workspace:*" @@ -18148,7 +18194,16 @@ __metadata: languageName: node linkType: hard -"i18next@npm:^23.0.0, i18next@npm:^23.11.5, i18next@npm:^23.5.1": +"i18next@npm:^23.0.0, i18next@npm:^23.5.1": + version: 23.11.3 + resolution: "i18next@npm:23.11.3" + dependencies: + "@babel/runtime": "npm:^7.23.2" + checksum: 10/9d562ade19d0beba16683ff94967a6dedc0a32ce335d203c5a160f075ac5a9a7a9adb164085a6b7b69328568bc932a65b92664834c2bf3e15d8f3bff90f15353 + languageName: node + linkType: hard + +"i18next@npm:^23.11.5": version: 23.11.5 resolution: "i18next@npm:23.11.5" dependencies: @@ -29522,13 +29577,20 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^4.18.2, type-fest@npm:^4.9.0": +"type-fest@npm:^4.18.2": version: 4.18.3 resolution: "type-fest@npm:4.18.3" checksum: 10/eb750920d0ef3639177f581edd6489d972c5c5827abb602a9c9662889aad148a7d558257e36c563f1beb81a2e417faec52ecec9799b28531d8335856f91e6dff languageName: node linkType: hard +"type-fest@npm:^4.9.0": + version: 4.10.2 + resolution: "type-fest@npm:4.10.2" + checksum: 10/2b1ad1270d9fabeeb506ba831d513caeb05bfc852e5e012511d785ce9dc68d773fe0a42bddf857a362c7f3406244809c5b8a698b743bb7617d4a8c470672087f + languageName: node + linkType: hard + "type-is@npm:~1.6.18": version: 1.6.18 resolution: "type-is@npm:1.6.18"