@grafana/plugin-e2e 3.9.0-canary.2621.26576348885.0 → 3.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var semver = require('semver');
4
3
  var ComponentBase = require('./ComponentBase.js');
5
4
  var utils = require('../utils.js');
6
5
 
@@ -8,16 +7,6 @@ class Select extends ComponentBase.ComponentBase {
8
7
  constructor(ctx, element) {
9
8
  super(ctx, element);
10
9
  }
11
- static getContainer(ctx, root) {
12
- const base = root ?? ctx.page;
13
- if (semver.gte(ctx.grafanaVersion, "13.1.0")) {
14
- return base.locator(utils.resolveGrafanaSelector(ctx.selectors.components.Select.container)).locator("xpath=..").first();
15
- }
16
- return base.locator('[class*="-grafana-select-value-container"]:not([class*="-grafana-select-value-container-multi"])').locator("xpath=..").first();
17
- }
18
- within(root) {
19
- return new Select(this.ctx, Select.getContainer(this.ctx, root));
20
- }
21
10
  async selectOption(values, options) {
22
11
  const menu = await openSelect(this, options);
23
12
  await this.locator().page().keyboard.type(values);
@@ -1,8 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var ComponentBase = require('./ComponentBase.js');
4
- var semver = require('semver');
5
- var utils = require('../utils.js');
4
+ var version = require('../../utils/version.js');
6
5
 
7
6
  var __defProp = Object.defineProperty;
8
7
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
@@ -13,21 +12,8 @@ class Switch extends ComponentBase.ComponentBase {
13
12
  __publicField(this, "group");
14
13
  this.group = group;
15
14
  }
16
- static getContainer(ctx, root) {
17
- const base = root ?? ctx.page;
18
- if (semver.gte(ctx.grafanaVersion, "13.1.0")) {
19
- return base.locator(utils.resolveGrafanaSelector(ctx.selectors.components.Switch.container)).first();
20
- }
21
- if (semver.gte(ctx.grafanaVersion, "12.0.0")) {
22
- return base.locator('div:has(> input[type="checkbox"][role="switch"])').first();
23
- }
24
- return base.locator('div:has(> input[type="checkbox"] + label)').first();
25
- }
26
- within(root) {
27
- return new Switch(this.ctx, Switch.getContainer(this.ctx, root));
28
- }
29
15
  static getElement(ctx, group) {
30
- if (semver.gte(ctx.grafanaVersion, "11.5.0")) {
16
+ if (version.gte(ctx.grafanaVersion, "11.5.0")) {
31
17
  return group.getByRole("switch");
32
18
  } else {
33
19
  return group.getByRole("checkbox");
@@ -46,7 +32,7 @@ class Switch extends ComponentBase.ComponentBase {
46
32
  }
47
33
  }
48
34
  async getSwitch(options) {
49
- if (semver.lt(this.ctx.grafanaVersion, "11.3.0")) {
35
+ if (version.lt(this.ctx.grafanaVersion, "11.3.0")) {
50
36
  const id = await this.element.getAttribute("id", options);
51
37
  return this.group.locator(`label[for='${id}']`);
52
38
  }
@@ -1,27 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var semver = require('semver');
3
+ var version = require('../../utils/version.js');
4
4
  var ScopedComponent = require('./ScopedComponent.js');
5
5
 
6
- function _interopNamespaceDefault(e) {
7
- var n = Object.create(null);
8
- if (e) {
9
- Object.keys(e).forEach(function (k) {
10
- if (k !== 'default') {
11
- var d = Object.getOwnPropertyDescriptor(e, k);
12
- Object.defineProperty(n, k, d.get ? d : {
13
- enumerable: true,
14
- get: function () { return e[k]; }
15
- });
16
- }
17
- });
18
- }
19
- n.default = e;
20
- return Object.freeze(n);
21
- }
22
-
23
- var semver__namespace = /*#__PURE__*/_interopNamespaceDefault(semver);
24
-
25
6
  class TimeRange extends ScopedComponent.ScopedComponent {
26
7
  /**
27
8
  * Opens the time picker and sets the time range to the provided values
@@ -34,7 +15,7 @@ class TimeRange extends ScopedComponent.ScopedComponent {
34
15
  await this.ctx.page.locator('[aria-controls="TimePickerContent"]').last().click();
35
16
  }
36
17
  if (zone) {
37
- const changeTimeSettingsButton = semver__namespace.gte(this.ctx.grafanaVersion, "11.0.0") ? this.getByGrafanaSelector(TimeZonePicker.changeTimeSettingsButton) : this.ctx.page.getByRole("button", { name: "Change time settings" });
18
+ const changeTimeSettingsButton = version.gte(this.ctx.grafanaVersion, "11.0.0") ? this.getByGrafanaSelector(TimeZonePicker.changeTimeSettingsButton) : this.ctx.page.getByRole("button", { name: "Change time settings" });
38
19
  await changeTimeSettingsButton.click();
39
20
  await this.getByGrafanaSelector(TimeZonePicker.containerV2).click();
40
21
  await this.getByGrafanaSelector(Select.option).filter({ hasText: zone }).click();
@@ -1,23 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var semver = require('semver');
4
3
  var ComponentBase = require('./ComponentBase.js');
5
- var utils = require('../utils.js');
6
4
 
7
5
  class UnitPicker extends ComponentBase.ComponentBase {
8
6
  constructor(ctx, element) {
9
7
  super(ctx, element);
10
8
  }
11
- static getContainer(ctx, root) {
12
- const base = root ?? ctx.page;
13
- if (semver.gte(ctx.grafanaVersion, "13.1.0")) {
14
- return base.locator(utils.resolveGrafanaSelector(ctx.selectors.components.UnitPicker.container)).first();
15
- }
16
- return base.locator('div:has(> div > [data-testid="input-wrapper"] input[placeholder="Choose"])').first();
17
- }
18
- within(root) {
19
- return new UnitPicker(this.ctx, UnitPicker.getContainer(this.ctx, root));
20
- }
21
9
  async selectOption(value, options) {
22
10
  await this.element.getByRole("textbox").click();
23
11
  const option = await this.getOption(value, options);
@@ -1,30 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var semver = require('semver');
3
+ var version = require('../../utils/version.js');
4
4
  var GrafanaPage = require('./GrafanaPage.js');
5
5
  var AlertRuleQuery = require('../components/AlertRuleQuery.js');
6
6
  var test = require('@playwright/test');
7
7
  var isFeatureToggleEnabled = require('../../fixtures/isFeatureToggleEnabled.js');
8
8
 
9
- function _interopNamespaceDefault(e) {
10
- var n = Object.create(null);
11
- if (e) {
12
- Object.keys(e).forEach(function (k) {
13
- if (k !== 'default') {
14
- var d = Object.getOwnPropertyDescriptor(e, k);
15
- Object.defineProperty(n, k, d.get ? d : {
16
- enumerable: true,
17
- get: function () { return e[k]; }
18
- });
19
- }
20
- });
21
- }
22
- n.default = e;
23
- return Object.freeze(n);
24
- }
25
-
26
- var semver__namespace = /*#__PURE__*/_interopNamespaceDefault(semver);
27
-
28
9
  const QUERY_AND_EXPRESSION_STEP_ID = "2";
29
10
  const ALERT_PAGE_READY_TIMEOUT = 15e3;
30
11
  class AlertRuleEditPage extends GrafanaPage.GrafanaPage {
@@ -45,7 +26,7 @@ class AlertRuleEditPage extends GrafanaPage.GrafanaPage {
45
26
  * Returns a locator for hte alert rule name field
46
27
  */
47
28
  get alertRuleNameField() {
48
- if (semver__namespace.gte(this.ctx.grafanaVersion, "11.1.0")) {
29
+ if (version.gte(this.ctx.grafanaVersion, "11.1.0")) {
49
30
  return this.getByGrafanaSelector(this.ctx.selectors.components.AlertRules.ruleNameField);
50
31
  }
51
32
  return this.ctx.page.getByPlaceholder("Give your alert rule a name");
@@ -151,7 +132,7 @@ class AlertRuleEditPage extends GrafanaPage.GrafanaPage {
151
132
  */
152
133
  async evaluate(options) {
153
134
  await this.ctx.page.waitForTimeout(1e3);
154
- if (semver__namespace.gte(this.ctx.grafanaVersion, "10.0.0")) {
135
+ if (version.gte(this.ctx.grafanaVersion, "10.0.0")) {
155
136
  await this.ctx.page.route(this.ctx.selectors.apis.Alerting.eval, async (route) => {
156
137
  const response = await route.fetch();
157
138
  if (!response.ok()) {
@@ -171,7 +152,7 @@ class AlertRuleEditPage extends GrafanaPage.GrafanaPage {
171
152
  options
172
153
  );
173
154
  let evaluateButton = this.getByGrafanaSelector(this.ctx.selectors.components.AlertRules.previewButton);
174
- if (semver__namespace.lt(this.ctx.grafanaVersion, "11.1.0")) {
155
+ if (version.lt(this.ctx.grafanaVersion, "11.1.0")) {
175
156
  evaluateButton = this.ctx.page.getByRole("button", { name: "Preview", exact: true });
176
157
  }
177
158
  await test.expect(evaluateButton).toBeVisible({ timeout: ALERT_PAGE_READY_TIMEOUT });
@@ -1,28 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var semver = require('semver');
3
+ var version = require('../../utils/version.js');
4
4
  var DataSourcePicker = require('../components/DataSourcePicker.js');
5
5
  var GrafanaPage = require('./GrafanaPage.js');
6
6
 
7
- function _interopNamespaceDefault(e) {
8
- var n = Object.create(null);
9
- if (e) {
10
- Object.keys(e).forEach(function (k) {
11
- if (k !== 'default') {
12
- var d = Object.getOwnPropertyDescriptor(e, k);
13
- Object.defineProperty(n, k, d.get ? d : {
14
- enumerable: true,
15
- get: function () { return e[k]; }
16
- });
17
- }
18
- });
19
- }
20
- n.default = e;
21
- return Object.freeze(n);
22
- }
23
-
24
- var semver__namespace = /*#__PURE__*/_interopNamespaceDefault(semver);
25
-
26
7
  var __defProp = Object.defineProperty;
27
8
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
28
9
  var __publicField = (obj, key, value) => __defNormalProp(obj, key + "" , value);
@@ -41,7 +22,7 @@ class AnnotationEditPage extends GrafanaPage.GrafanaPage {
41
22
  const { Dashboard, AddDashboard } = this.ctx.selectors.pages;
42
23
  const url = this.args.dashboard?.uid ? `${Dashboard.url(this.args.dashboard.uid)}?${Dashboard.Settings.Annotations.Edit.urlParams(this.args.id)}` : AddDashboard.Settings.Annotations.Edit.url(this.args.id);
43
24
  await super.navigate(url, options);
44
- if (semver__namespace.lt(this.ctx.grafanaVersion, "9.2.0") && this.args.id) {
25
+ if (version.lt(this.ctx.grafanaVersion, "9.2.0") && this.args.id) {
45
26
  const list = this.ctx.page.locator("tbody tr");
46
27
  const variables = await list.all();
47
28
  await variables[Number(this.args.id)].click();
@@ -56,7 +37,7 @@ class AnnotationEditPage extends GrafanaPage.GrafanaPage {
56
37
  (resp) => resp.url().includes(this.ctx.selectors.apis.DataSource.query),
57
38
  options
58
39
  );
59
- const testButton = semver__namespace.gte(this.ctx.grafanaVersion, "11.0.0") ? this.getByGrafanaSelector(this.ctx.selectors.components.Annotations.editor.testButton) : this.ctx.page.getByRole("button", { name: "TEST" });
40
+ const testButton = version.gte(this.ctx.grafanaVersion, "11.0.0") ? this.getByGrafanaSelector(this.ctx.selectors.components.Annotations.editor.testButton) : this.ctx.page.getByRole("button", { name: "TEST" });
60
41
  await testButton.click();
61
42
  return responsePromise;
62
43
  }
@@ -1,28 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var semver = require('semver');
3
+ var version = require('../../utils/version.js');
4
4
  var AnnotationEditPage = require('./AnnotationEditPage.js');
5
5
  var GrafanaPage = require('./GrafanaPage.js');
6
6
 
7
- function _interopNamespaceDefault(e) {
8
- var n = Object.create(null);
9
- if (e) {
10
- Object.keys(e).forEach(function (k) {
11
- if (k !== 'default') {
12
- var d = Object.getOwnPropertyDescriptor(e, k);
13
- Object.defineProperty(n, k, d.get ? d : {
14
- enumerable: true,
15
- get: function () { return e[k]; }
16
- });
17
- }
18
- });
19
- }
20
- n.default = e;
21
- return Object.freeze(n);
22
- }
23
-
24
- var semver__namespace = /*#__PURE__*/_interopNamespaceDefault(semver);
25
-
26
7
  class AnnotationPage extends GrafanaPage.GrafanaPage {
27
8
  constructor(ctx, dashboard) {
28
9
  super(ctx, dashboard);
@@ -45,7 +26,7 @@ class AnnotationPage extends GrafanaPage.GrafanaPage {
45
26
  if (!this.dashboard?.uid) {
46
27
  await this.getByGrafanaSelector(addAnnotationCTAV2).click();
47
28
  } else {
48
- const newQueryButton = semver__namespace.gte(this.ctx.grafanaVersion, "11.0.0") ? this.getByGrafanaSelector(addAnnotationCTAV2) : this.ctx.page.getByRole("button", { name: "New query" });
29
+ const newQueryButton = version.gte(this.ctx.grafanaVersion, "11.0.0") ? this.getByGrafanaSelector(addAnnotationCTAV2) : this.ctx.page.getByRole("button", { name: "New query" });
49
30
  await newQueryButton.click();
50
31
  }
51
32
  const editIndex = await this.ctx.page.evaluate(() => {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var semver = require('semver');
3
+ var version = require('../../utils/version.js');
4
4
  var test = require('@playwright/test');
5
5
  var DataSourcePicker = require('../components/DataSourcePicker.js');
6
6
  var GrafanaPage = require('./GrafanaPage.js');
@@ -10,25 +10,6 @@ var Panel = require('../components/Panel.js');
10
10
  var isFeatureToggleEnabled = require('../../fixtures/isFeatureToggleEnabled.js');
11
11
  var utils = require('../utils.js');
12
12
 
13
- function _interopNamespaceDefault(e) {
14
- var n = Object.create(null);
15
- if (e) {
16
- Object.keys(e).forEach(function (k) {
17
- if (k !== 'default') {
18
- var d = Object.getOwnPropertyDescriptor(e, k);
19
- Object.defineProperty(n, k, d.get ? d : {
20
- enumerable: true,
21
- get: function () { return e[k]; }
22
- });
23
- }
24
- });
25
- }
26
- n.default = e;
27
- return Object.freeze(n);
28
- }
29
-
30
- var semver__namespace = /*#__PURE__*/_interopNamespaceDefault(semver);
31
-
32
13
  var __defProp = Object.defineProperty;
33
14
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
34
15
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
@@ -76,10 +57,10 @@ class DashboardPage extends GrafanaPage.GrafanaPage {
76
57
  */
77
58
  get toolbar() {
78
59
  const { components, pages } = this.ctx.selectors;
79
- if (semver__namespace.gte(this.ctx.grafanaVersion, "11.1.0")) {
60
+ if (version.gte(this.ctx.grafanaVersion, "11.1.0")) {
80
61
  return this.getByGrafanaSelector(pages.Dashboard.Controls);
81
62
  }
82
- return semver__namespace.gte(this.ctx.grafanaVersion, "9.4.0") ? this.getByGrafanaSelector(components.NavToolbar.container) : this.ctx.page.locator(".page-toolbar");
63
+ return version.gte(this.ctx.grafanaVersion, "9.4.0") ? this.getByGrafanaSelector(components.NavToolbar.container) : this.ctx.page.locator(".page-toolbar");
83
64
  }
84
65
  /**
85
66
  * Scrolls the page viewport-by-viewport to trigger below-fold panel queries.
@@ -143,7 +124,7 @@ class DashboardPage extends GrafanaPage.GrafanaPage {
143
124
  */
144
125
  getPanelByTitle(title) {
145
126
  let locator = this.getByGrafanaSelector(this.ctx.selectors.components.Panels.Panel.title(title));
146
- if (semver__namespace.lt(this.ctx.grafanaVersion, "9.5.0")) {
127
+ if (version.lt(this.ctx.grafanaVersion, "9.5.0")) {
147
128
  locator = locator.locator("..").locator("..");
148
129
  }
149
130
  return new Panel.Panel(this.ctx, locator);
@@ -157,7 +138,7 @@ class DashboardPage extends GrafanaPage.GrafanaPage {
157
138
  * await expect(panel.fieldNames()).toContainText(['time', 'temperature']);
158
139
  */
159
140
  getPanelById(panelId) {
160
- if (semver__namespace.lt(this.ctx.grafanaVersion, "11.3.0")) {
141
+ if (version.lt(this.ctx.grafanaVersion, "11.3.0")) {
161
142
  return new Panel.Panel(this.ctx, this.ctx.page.locator(`[data-panelid="${panelId}"]`));
162
143
  }
163
144
  return new Panel.Panel(this.ctx, this.ctx.page.locator(`[data-viz-panel-key="panel-${panelId}"]`));
@@ -168,7 +149,7 @@ class DashboardPage extends GrafanaPage.GrafanaPage {
168
149
  async addPanel() {
169
150
  const { components, pages, constants } = this.ctx.selectors;
170
151
  let scenesEnabled = true;
171
- if (semver__namespace.lt(this.ctx.grafanaVersion, "13.0.0")) {
152
+ if (version.lt(this.ctx.grafanaVersion, "13.0.0")) {
172
153
  scenesEnabled = await isFeatureToggleEnabled.isLegacyFeatureEnabled(this.ctx.page, "dashboardScene");
173
154
  }
174
155
  if (scenesEnabled && this.dashboard?.uid) {
@@ -183,7 +164,7 @@ class DashboardPage extends GrafanaPage.GrafanaPage {
183
164
  await showMoreItems.click();
184
165
  }
185
166
  }
186
- const useNewSidebarLayout = semver__namespace.gte(this.ctx.grafanaVersion, "13.0.0") && await isFeatureToggleEnabled.isLegacyFeatureEnabled(this.ctx.page, "dashboardNewLayouts");
167
+ const useNewSidebarLayout = version.gte(this.ctx.grafanaVersion, "13.0.0") && await isFeatureToggleEnabled.isLegacyFeatureEnabled(this.ctx.page, "dashboardNewLayouts");
187
168
  if (useNewSidebarLayout) {
188
169
  await this.ctx.page.waitForSelector(utils.resolveGrafanaSelector(this.ctx.selectors.components.Sidebar.container));
189
170
  const newPanelButton = this.getByGrafanaSelector(components.Sidebar.newPanelButton);
@@ -191,9 +172,9 @@ class DashboardPage extends GrafanaPage.GrafanaPage {
191
172
  await this.getByGrafanaSelector(pages.Dashboard.Sidebar.addButton).click();
192
173
  }
193
174
  await this.getByGrafanaSelector(components.Sidebar.newPanelButton).click();
194
- const configureButton = semver__namespace.lt(this.ctx.grafanaVersion, "13.1.0") ? this.getByGrafanaSelector(components.Sidebar.container).getByRole("button", { name: "Configure" }) : this.getByGrafanaSelector(components.Sidebar.configurePanelButton);
175
+ const configureButton = version.lt(this.ctx.grafanaVersion, "13.1.0") ? this.getByGrafanaSelector(components.Sidebar.container).getByRole("button", { name: "Configure" }) : this.getByGrafanaSelector(components.Sidebar.configurePanelButton);
195
176
  await configureButton.click();
196
- } else if (semver__namespace.gte(this.ctx.grafanaVersion, "9.5.0")) {
177
+ } else if (version.gte(this.ctx.grafanaVersion, "9.5.0")) {
197
178
  let addButton = this.getByGrafanaSelector(
198
179
  components.PageToolbar.itemButton(constants.PageToolBar.itemButtonTitle)
199
180
  );
@@ -1,30 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var semver = require('semver');
3
+ var version = require('../../utils/version.js');
4
4
  var DataSourcePicker = require('../components/DataSourcePicker.js');
5
5
  var GrafanaPage = require('./GrafanaPage.js');
6
6
  var TimeRange = require('../components/TimeRange.js');
7
7
  var Panel = require('../components/Panel.js');
8
8
 
9
- function _interopNamespaceDefault(e) {
10
- var n = Object.create(null);
11
- if (e) {
12
- Object.keys(e).forEach(function (k) {
13
- if (k !== 'default') {
14
- var d = Object.getOwnPropertyDescriptor(e, k);
15
- Object.defineProperty(n, k, d.get ? d : {
16
- enumerable: true,
17
- get: function () { return e[k]; }
18
- });
19
- }
20
- });
21
- }
22
- n.default = e;
23
- return Object.freeze(n);
24
- }
25
-
26
- var semver__namespace = /*#__PURE__*/_interopNamespaceDefault(semver);
27
-
28
9
  var __defProp = Object.defineProperty;
29
10
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
30
11
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
@@ -53,9 +34,9 @@ class ExplorePage extends GrafanaPage.GrafanaPage {
53
34
  let locator = this.getByGrafanaSelector(this.ctx.selectors.components.Panels.Panel.title(suffix), {
54
35
  startsWith: true
55
36
  });
56
- if (semver__namespace.lt(this.ctx.grafanaVersion, "9.3.0")) {
37
+ if (version.lt(this.ctx.grafanaVersion, "9.3.0")) {
57
38
  locator = page.getByText(suffix).locator("..").locator("..").locator("..");
58
- } else if (semver__namespace.lt(this.ctx.grafanaVersion, "10.0.0")) {
39
+ } else if (version.lt(this.ctx.grafanaVersion, "10.0.0")) {
59
40
  locator = page.getByRole("button", { name: text }).locator("..");
60
41
  }
61
42
  return locator;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var semver = require('semver');
3
+ var version = require('../../utils/version.js');
4
4
  var test = require('@playwright/test');
5
5
  var DataSourcePicker = require('../components/DataSourcePicker.js');
6
6
  var GrafanaPage = require('./GrafanaPage.js');
@@ -10,25 +10,6 @@ var utils = require('../utils.js');
10
10
  var DashboardPage = require('./DashboardPage.js');
11
11
  var PanelEditOptionsGroup = require('../components/PanelEditOptionsGroup.js');
12
12
 
13
- function _interopNamespaceDefault(e) {
14
- var n = Object.create(null);
15
- if (e) {
16
- Object.keys(e).forEach(function (k) {
17
- if (k !== 'default') {
18
- var d = Object.getOwnPropertyDescriptor(e, k);
19
- Object.defineProperty(n, k, d.get ? d : {
20
- enumerable: true,
21
- get: function () { return e[k]; }
22
- });
23
- }
24
- });
25
- }
26
- n.default = e;
27
- return Object.freeze(n);
28
- }
29
-
30
- var semver__namespace = /*#__PURE__*/_interopNamespaceDefault(semver);
31
-
32
13
  var __defProp = Object.defineProperty;
33
14
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
34
15
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
@@ -48,7 +29,7 @@ class PanelEditPage extends GrafanaPage.GrafanaPage {
48
29
  const locator = this.getByGrafanaSelector(this.ctx.selectors.components.Panels.Panel.title(""), {
49
30
  startsWith: true
50
31
  });
51
- if (semver__namespace.lt(this.ctx.grafanaVersion, "9.5.0")) {
32
+ if (version.lt(this.ctx.grafanaVersion, "9.5.0")) {
52
33
  return locator.locator("..").locator("..");
53
34
  }
54
35
  return locator;
@@ -66,7 +47,7 @@ class PanelEditPage extends GrafanaPage.GrafanaPage {
66
47
  async toggleTableView() {
67
48
  await utils.radioButtonSetChecked(this.ctx.page, "Table view", true);
68
49
  let locator = this.getByGrafanaSelector(this.ctx.selectors.components.Panels.Panel.title(""));
69
- if (semver__namespace.lt(this.ctx.grafanaVersion, "10.4.0")) {
50
+ if (version.lt(this.ctx.grafanaVersion, "10.4.0")) {
70
51
  locator = this.ctx.page.getByRole("table");
71
52
  }
72
53
  this.panel = new Panel.Panel(this.ctx, locator);
@@ -86,7 +67,7 @@ class PanelEditPage extends GrafanaPage.GrafanaPage {
86
67
  const { OptionsGroup, PanelEditor } = this.ctx.selectors.components;
87
68
  const sectionGroupTitle = "Panel options";
88
69
  await this.collapseSection(sectionGroupTitle);
89
- const vizInput = semver__namespace.gte(this.ctx.grafanaVersion, "11.0.0") ? this.getByGrafanaSelector(PanelEditor.OptionsPane.fieldInput(TITLE)) : this.getByGrafanaSelector(OptionsGroup.group(sectionGroupTitle)).locator("input").first();
70
+ const vizInput = version.gte(this.ctx.grafanaVersion, "11.0.0") ? this.getByGrafanaSelector(PanelEditor.OptionsPane.fieldInput(TITLE)) : this.getByGrafanaSelector(OptionsGroup.group(sectionGroupTitle)).locator("input").first();
90
71
  await vizInput.fill(titleText);
91
72
  await this.ctx.page.keyboard.press("Tab");
92
73
  }
@@ -100,7 +81,7 @@ class PanelEditPage extends GrafanaPage.GrafanaPage {
100
81
  if (showPanelEditElementCount > 0) {
101
82
  await showPanelEditElement.click();
102
83
  }
103
- if (semver__namespace.gte(this.ctx.grafanaVersion, "12.4.0")) {
84
+ if (version.gte(this.ctx.grafanaVersion, "12.4.0")) {
104
85
  const allVisualizationsTab = components.Tab.title(constants.Tab.title);
105
86
  if (!await this.getByGrafanaSelector(allVisualizationsTab).isVisible()) {
106
87
  await this.getByGrafanaSelector(components.PanelEditor.toggleVizPicker).click();
@@ -110,7 +91,7 @@ class PanelEditPage extends GrafanaPage.GrafanaPage {
110
91
  await this.getByGrafanaSelector(components.PanelEditor.toggleVizPicker).click();
111
92
  }
112
93
  await this.getByGrafanaSelector(components.PluginVisualization.item(visualization)).click();
113
- const vizSelector = semver__namespace.lt(this.ctx.grafanaVersion, "12.4.0") ? components.PanelEditor.toggleVizPicker : components.PanelEditor.OptionsPane.header;
94
+ const vizSelector = version.lt(this.ctx.grafanaVersion, "12.4.0") ? components.PanelEditor.toggleVizPicker : components.PanelEditor.OptionsPane.header;
114
95
  await test.expect(
115
96
  this.getByGrafanaSelector(vizSelector),
116
97
  `Could not set visualization to ${visualization}. Ensure the panel is installed.`
@@ -133,7 +114,7 @@ class PanelEditPage extends GrafanaPage.GrafanaPage {
133
114
  * Returns the name of the visualization currently selected in the panel editor
134
115
  */
135
116
  getVisualizationName() {
136
- const vizSelector = semver__namespace.lt(this.ctx.grafanaVersion, "12.4.0") ? this.ctx.selectors.components.PanelEditor.toggleVizPicker : this.ctx.selectors.components.PanelEditor.OptionsPane.header;
117
+ const vizSelector = version.lt(this.ctx.grafanaVersion, "12.4.0") ? this.ctx.selectors.components.PanelEditor.toggleVizPicker : this.ctx.selectors.components.PanelEditor.OptionsPane.header;
137
118
  return this.getByGrafanaSelector(vizSelector);
138
119
  }
139
120
  /**
@@ -141,7 +122,7 @@ class PanelEditPage extends GrafanaPage.GrafanaPage {
141
122
  * In versions prior to 11.3.0, this method clicks the "Apply" button instead
142
123
  */
143
124
  async backToDashboard() {
144
- if (semver__namespace.gte(this.ctx.grafanaVersion, "11.3.0")) {
125
+ if (version.gte(this.ctx.grafanaVersion, "11.3.0")) {
145
126
  await this.getByGrafanaSelector(
146
127
  this.ctx.selectors.components.NavToolbar.editDashboard.backToDashboardButton
147
128
  ).click();
@@ -1,29 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var semver = require('semver');
3
+ var version = require('../../utils/version.js');
4
4
  var test = require('@playwright/test');
5
5
  var DataSourcePicker = require('../components/DataSourcePicker.js');
6
6
  var GrafanaPage = require('./GrafanaPage.js');
7
7
 
8
- function _interopNamespaceDefault(e) {
9
- var n = Object.create(null);
10
- if (e) {
11
- Object.keys(e).forEach(function (k) {
12
- if (k !== 'default') {
13
- var d = Object.getOwnPropertyDescriptor(e, k);
14
- Object.defineProperty(n, k, d.get ? d : {
15
- enumerable: true,
16
- get: function () { return e[k]; }
17
- });
18
- }
19
- });
20
- }
21
- n.default = e;
22
- return Object.freeze(n);
23
- }
24
-
25
- var semver__namespace = /*#__PURE__*/_interopNamespaceDefault(semver);
26
-
27
8
  var __defProp = Object.defineProperty;
28
9
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
29
10
  var __publicField = (obj, key, value) => __defNormalProp(obj, key + "" , value);
@@ -42,7 +23,7 @@ class VariableEditPage extends GrafanaPage.GrafanaPage {
42
23
  const { Dashboard, AddDashboard } = this.ctx.selectors.pages;
43
24
  const url = this.args.dashboard?.uid ? `${Dashboard.url(this.args.dashboard.uid)}?${Dashboard.Settings.Variables.Edit.urlParams(this.args.id)}` : AddDashboard.Settings.Variables.Edit.url(this.args.id);
44
25
  await super.navigate(url, options);
45
- if (semver__namespace.lt(this.ctx.grafanaVersion, "9.2.0") && this.args.id) {
26
+ if (version.lt(this.ctx.grafanaVersion, "9.2.0") && this.args.id) {
46
27
  const list = await this.getByGrafanaSelector(
47
28
  this.ctx.selectors.pages.Dashboard.Settings.Variables.List.table
48
29
  ).locator("tbody tr");
@@ -72,7 +53,7 @@ class VariableEditPage extends GrafanaPage.GrafanaPage {
72
53
  * @example await this.ctx.page.waitForResponse((resp) => resp.url().includes('<url>')
73
54
  */
74
55
  async runQuery() {
75
- if (semver__namespace.gte(this.ctx.grafanaVersion, "9.2.0")) {
56
+ if (version.gte(this.ctx.grafanaVersion, "9.2.0")) {
76
57
  await this.getByGrafanaSelector(
77
58
  this.ctx.selectors.pages.Dashboard.Settings.Variables.Edit.General.submitButton
78
59
  ).click();
@@ -0,0 +1,107 @@
1
+ 'use strict';
2
+
3
+ function parseVer(v) {
4
+ const cleaned = v.split("+")[0];
5
+ const dash = cleaned.indexOf("-");
6
+ const base = dash === -1 ? cleaned : cleaned.slice(0, dash);
7
+ const preStr = dash === -1 ? "" : cleaned.slice(dash + 1);
8
+ const [ma = 0, mi = 0, pa = 0] = base.split(".").map((s) => parseInt(s, 10));
9
+ return {
10
+ major: ma,
11
+ minor: mi,
12
+ patch: pa,
13
+ pre: preStr ? preStr.split(".") : null
14
+ };
15
+ }
16
+ function cmpPre(a, b) {
17
+ const len = Math.max(a.length, b.length);
18
+ for (let i = 0; i < len; i++) {
19
+ const ai = a[i];
20
+ const bi = b[i];
21
+ if (ai === void 0) {
22
+ return -1;
23
+ }
24
+ if (bi === void 0) {
25
+ return 1;
26
+ }
27
+ const aIsNum = /^\d+$/.test(ai);
28
+ const bIsNum = /^\d+$/.test(bi);
29
+ if (aIsNum && bIsNum) {
30
+ const diff = parseInt(ai, 10) - parseInt(bi, 10);
31
+ if (diff !== 0) {
32
+ return diff;
33
+ }
34
+ } else if (aIsNum) {
35
+ return -1;
36
+ } else if (bIsNum) {
37
+ return 1;
38
+ } else if (ai < bi) {
39
+ return -1;
40
+ } else if (ai > bi) {
41
+ return 1;
42
+ }
43
+ }
44
+ return 0;
45
+ }
46
+ function cmp(a, b) {
47
+ const va = parseVer(a);
48
+ const vb = parseVer(b);
49
+ if (va.major !== vb.major) {
50
+ return va.major - vb.major;
51
+ }
52
+ if (va.minor !== vb.minor) {
53
+ return va.minor - vb.minor;
54
+ }
55
+ if (va.patch !== vb.patch) {
56
+ return va.patch - vb.patch;
57
+ }
58
+ if (!va.pre && !vb.pre) {
59
+ return 0;
60
+ }
61
+ if (!va.pre) {
62
+ return 1;
63
+ }
64
+ if (!vb.pre) {
65
+ return -1;
66
+ }
67
+ return cmpPre(va.pre, vb.pre);
68
+ }
69
+ const gte = (a, b) => cmp(a, b) >= 0;
70
+ const lt = (a, b) => cmp(a, b) < 0;
71
+ const lte = (a, b) => cmp(a, b) <= 0;
72
+ const gt = (a, b) => cmp(a, b) > 0;
73
+ const eq = (a, b) => cmp(a, b) === 0;
74
+ const satisfies = (version, range) => {
75
+ const orGroups = range.split("||").map((group) => group.trim());
76
+ return orGroups.some((group) => {
77
+ const comparators = group.split(/\s+/).filter(Boolean);
78
+ return comparators.every((comparator) => evalComparator(version, comparator));
79
+ });
80
+ };
81
+ function evalComparator(version, comparator) {
82
+ const match = comparator.match(/^(>=|<=|>|<|=)?(.+)$/);
83
+ if (!match) {
84
+ return false;
85
+ }
86
+ const [, op = "=", target] = match;
87
+ switch (op) {
88
+ case ">=":
89
+ return gte(version, target);
90
+ case "<=":
91
+ return lte(version, target);
92
+ case ">":
93
+ return gt(version, target);
94
+ case "<":
95
+ return lt(version, target);
96
+ case "=":
97
+ default:
98
+ return eq(version, target);
99
+ }
100
+ }
101
+
102
+ exports.eq = eq;
103
+ exports.gt = gt;
104
+ exports.gte = gte;
105
+ exports.lt = lt;
106
+ exports.lte = lte;
107
+ exports.satisfies = satisfies;