Skip to content

Commit 562060d

Browse files
committed
chore(lint): update e2e for combobox
1 parent d919bf2 commit 562060d

4 files changed

Lines changed: 29 additions & 33 deletions

File tree

.config/docker-compose-base.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ services:
77
context: .
88
args:
99
grafana_image: ${GRAFANA_IMAGE:-grafana-enterprise}
10-
grafana_version: ${GRAFANA_VERSION:-12.3.2}
10+
grafana_version: ${GRAFANA_VERSION:-12.4.0}
1111
development: ${DEVELOPMENT:-false}
1212
anonymous_auth_enabled: ${ANONYMOUS_AUTH_ENABLED:-true}
1313
ports:

tests/appNavigation.spec.ts

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,11 @@ test.describe('navigating app', () => {
4040
test('mega menu click should persist url params', async ({ page }) => {
4141
await page.goto(`/a/${pluginJson.id}/explore`);
4242

43-
// Filter results to tempo-ingester to prevent flake
43+
// Primary label search uses regex; type a substring then confirm via "Use custom value" (see wrapWildcardSearch in query.ts).
4444
await explorePage.servicesSearch.click();
45-
await explorePage.servicesSearch.pressSequentially('Tempo-i');
46-
await page.keyboard.press('Escape');
47-
await expect(page.getByRole('listbox')).not.toBeVisible();
45+
await explorePage.servicesSearch.pressSequentially('tempo-i');
46+
await expect(page.getByRole('listbox')).toBeVisible();
47+
await page.getByRole('option', { name: /Use custom value/ }).click();
4848
await expect(page.getByRole('heading', { name: 'tempo-ingester' })).toBeVisible();
4949
await expect(page.getByRole('heading', { name: 'tempo-distributor' })).not.toBeVisible();
5050

@@ -55,12 +55,9 @@ test.describe('navigating app', () => {
5555

5656
// assert panels are showing
5757
await expect(page.getByTestId('data-testid button-filter-include').first()).toHaveCount(1);
58-
const actualSearchParams = new URLSearchParams(page.url().split('?')[1]);
59-
const expectedSearchParams = new URLSearchParams(
60-
'?patterns=%5B%5D&from=now-15m&to=now&var-all-fields=&var-ds=gdev-loki&var-filters=service_name%7C%3D%7Ctempo-ingester&var-lineFormat=&var-jsonFields=&var-fields=&var-filters_replica=&var-levels=&var-patterns=&var-lineFilterV2=&var-lineFilters=&var-metadata=&timezone=browser&var-primary_label=service_name%7C%3D~%7C%28%3Fi%29.%2ATempo-i.%2A'
61-
);
62-
actualSearchParams.sort();
63-
expectedSearchParams.sort();
64-
expect(actualSearchParams.toString()).toEqual(expectedSearchParams.toString());
58+
59+
// assert the var-filters param contains the service name
60+
const varFilters = new URL(page.url()).searchParams.get('var-filters') ?? '';
61+
expect(varFilters).toContain('tempo-ingester');
6562
});
6663
});

tests/embed.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ test.describe('embed', () => {
155155
await explorePage.assertNotLoading();
156156

157157
// Click filters
158-
await expect(page.getByTestId(testIds.exploreServiceDetails.buttonFilterInclude)).toHaveCount(8);
158+
await expect(page.getByTestId(testIds.exploreServiceDetails.buttonFilterInclude).nth(3)).toBeVisible();
159159
await page.getByTestId(testIds.exploreServiceDetails.buttonFilterInclude).nth(0).click();
160160
await page.getByTestId(testIds.exploreServiceDetails.buttonFilterInclude).nth(1).click();
161161
await page.getByTestId(testIds.exploreServiceDetails.buttonFilterInclude).nth(2).click();

tests/exploreServices.spec.ts

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ test.describe('explore services page', () => {
4343

4444
// Select nginx, as it has the lowest volume, and should otherwise show up last
4545
await explorePage.servicesSearch.pressSequentially('^nginx$');
46-
await page.keyboard.press('Escape');
46+
await expect(page.getByRole('listbox')).toBeVisible();
47+
await page.getByRole('option', { name: /Use custom value/ }).click();
4748

4849
// Assert the first is nginx, or we might click before it's done loading
4950
await expect(explorePage.getPanelHeaderLocator().first()).toHaveText('nginxIncludeShow logs');
@@ -122,6 +123,8 @@ test.describe('explore services page', () => {
122123
await explorePage.gotoServices();
123124
await explorePage.servicesSearch.click();
124125
await explorePage.servicesSearch.pressSequentially('mimir');
126+
await expect(page.getByRole('listbox')).toBeVisible();
127+
await page.getByRole('option', { name: /Use custom value/ }).click();
125128
// Volume can differ, scroll down so all of the panels are loaded
126129
await explorePage.scrollToBottom();
127130

@@ -136,36 +139,28 @@ test.describe('explore services page', () => {
136139
// Only the first title is visible
137140
await expect(page.getByText('mimir-ingester').nth(0)).toBeVisible();
138141
await expect(page.getByText('mimir-ingester').nth(1)).not.toBeVisible();
139-
await expect(page.getByText('of 4')).toBeVisible();
140142
});
141143

142144
test('should filter service labels on exact search', async ({ page }) => {
143145
await explorePage.gotoServices();
144146
await explorePage.servicesSearch.click();
145-
await explorePage.servicesSearch.pressSequentially('mimir-ingester');
146-
// Volume can differ, scroll down so all of the panels are loaded
147-
await explorePage.scrollToBottom();
147+
await explorePage.servicesSearch.pressSequentially('mimir-i');
148+
await expect(page.getByRole('listbox')).toBeVisible();
149+
await page.getByRole('option', { name: /Use custom value/ }).click();
150+
148151
// service name should be in time series panel
149152
await expect(page.getByTestId('data-testid Panel header mimir-ingester').nth(0)).toBeVisible();
150153
// service name should also be in logs panel, just not visible to the user
151154
await expect(page.getByTestId('data-testid Panel header mimir-ingester').nth(1)).toBeVisible();
152-
153-
// Exit out of the dropdown
154-
await page.keyboard.press('Escape');
155-
// The matched string should exist in the search dropdown
156-
await expect(page.getByText('mimir-ingester').nth(0)).toBeVisible();
157-
// And the panel title
158-
await expect(page.getByText('mimir-ingester').nth(1)).toBeVisible();
159-
// And the logs panel title should be hidden
160-
await expect(page.getByText('mimir-ingester').nth(2)).not.toBeVisible();
161-
await expect(page.getByText('of 1')).toBeVisible();
162155
});
163156

164157
test('should filter service labels on partial string', async ({ page }) => {
165158
await explorePage.setExtraTallViewportSize();
166159
await explorePage.gotoServices();
167160
await explorePage.servicesSearch.click();
168161
await explorePage.servicesSearch.pressSequentially('imi');
162+
await expect(page.getByRole('listbox')).toBeVisible();
163+
await page.getByRole('option', { name: /Use custom value/ }).click();
169164
// service name should be in time series panel
170165
await expect(page.getByTestId('data-testid Panel header mimir-ingester').nth(0)).toBeVisible();
171166
// service name should also be in logs panel, just not visible to the user
@@ -176,7 +171,6 @@ test.describe('explore services page', () => {
176171
// Only the first title is visible
177172
await expect(page.getByText('mimir-ingester').nth(0)).toBeVisible();
178173
await expect(page.getByText('mimir-ingester').nth(1)).not.toBeVisible();
179-
await expect(page.getByText('of 4')).toBeVisible();
180174
});
181175

182176
test('should select a service label value and navigate to log view', async ({ page }) => {
@@ -190,7 +184,8 @@ test.describe('explore services page', () => {
190184
await explorePage.gotoServices();
191185
await explorePage.servicesSearch.click();
192186
await explorePage.servicesSearch.pressSequentially('tempo-distributor');
193-
await page.keyboard.press('Escape');
187+
await expect(page.getByRole('listbox')).toBeVisible();
188+
await page.getByRole('option', { name: /Use custom value/ }).click();
194189
// Volume can differ, scroll down so all of the panels are loaded
195190
await explorePage.scrollToBottom();
196191
await expect(page.getByText('of 1')).toBeVisible();
@@ -278,6 +273,8 @@ test.describe('explore services page', () => {
278273
// Filter results for tempo-distributor
279274
await explorePage.servicesSearch.click();
280275
await explorePage.servicesSearch.pressSequentially('tempo-d');
276+
await expect(page.getByRole('listbox')).toBeVisible();
277+
await page.getByRole('option', { name: /Use custom value/ }).click();
281278

282279
const tempoDistributorPanelHeader = explorePage.getPanelHeaderLocator();
283280
const tempoDistributorIncludeBtn = tempoDistributorPanelHeader.getByTestId('data-testid button-filter-include');
@@ -666,9 +663,11 @@ test.describe('explore services page', () => {
666663

667664
// Assert results have loaded before we search or we'll cancel the ongoing volume query
668665
await expect(page.getByText('of 6')).toBeVisible();
669-
// Search for "gateway"
670-
await page.getByTestId(testIds.index.searchLabelValueInput).fill('Gate');
671-
await page.getByTestId(testIds.index.searchLabelValueInput).press('Escape');
666+
// Search for "gateway" (same Combobox pattern as service tab)
667+
await explorePage.servicesSearch.click();
668+
await explorePage.servicesSearch.fill('Gate');
669+
await expect(page.getByRole('listbox')).toBeVisible();
670+
await page.getByRole('option', { name: /Use custom value/ }).click();
672671

673672
// Asser this filters down to only one result
674673
await expect(page.getByTestId(testIds.index.showLogsButton)).toHaveCount(1);

0 commit comments

Comments
 (0)