Skip to content

Commit 7734edb

Browse files
authored
fix: broken tests for healthcheck (#2705)
1 parent 7e3aabb commit 7734edb

File tree

2 files changed

+97
-2
lines changed

2 files changed

+97
-2
lines changed

tests/suites/tenant/diagnostics/Diagnostics.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,6 @@ export class Diagnostics {
368368
await this.cpuCard.waitFor({state: 'visible', timeout: VISIBILITY_TIMEOUT});
369369
await this.storageCard.waitFor({state: 'visible', timeout: VISIBILITY_TIMEOUT});
370370
await this.memoryCard.waitFor({state: 'visible', timeout: VISIBILITY_TIMEOUT});
371-
await this.healthcheckCard.waitFor({state: 'visible', timeout: VISIBILITY_TIMEOUT});
372371
return true;
373372
}
374373

tests/suites/tenant/diagnostics/tabs/info.test.ts

Lines changed: 97 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,101 @@ test.describe('Diagnostics Info tab', async () => {
4141
expect(utilization.memory.usage).toBeTruthy();
4242
});
4343

44-
test('Info tab shows healthcheck status', async ({page}) => {
44+
test('Info tab shows healthcheck status when there are issues', async ({page}) => {
45+
// Mock healthcheck API to return DEGRADED status with issues
46+
await page.route(`**/viewer/json/healthcheck?*`, async (route) => {
47+
await route.fulfill({
48+
status: 200,
49+
contentType: 'application/json',
50+
body: JSON.stringify({
51+
self_check_result: 'DEGRADED',
52+
issue_log: [
53+
{
54+
id: 'issue-1',
55+
status: 'YELLOW',
56+
message: 'Some degraded component',
57+
location: {
58+
database: {
59+
name: tenantName,
60+
},
61+
},
62+
},
63+
],
64+
}),
65+
});
66+
});
67+
68+
const pageQueryParams = {
69+
schema: tenantName,
70+
database: tenantName,
71+
tenantPage: 'diagnostics',
72+
};
73+
const tenantPage = new TenantPage(page);
74+
await tenantPage.goto(pageQueryParams);
75+
76+
const diagnostics = new Diagnostics(page);
77+
await diagnostics.clickTab(DiagnosticsTab.Info);
78+
79+
// Healthcheck card should be visible when there are issues
80+
const status = await diagnostics.getHealthcheckStatus();
81+
expect(status).toBeTruthy();
82+
83+
// Check for degraded status class
84+
const isDegraded = await diagnostics.hasHealthcheckStatusClass(
85+
'ydb-healthcheck-preview__icon_degraded',
86+
);
87+
expect(isDegraded).toBe(true);
88+
});
89+
90+
test('Info tab hides healthcheck status when status is GOOD with no issues', async ({page}) => {
91+
// Mock healthcheck API to return GOOD status with no issues
92+
await page.route(`**/viewer/json/healthcheck?*`, async (route) => {
93+
await route.fulfill({
94+
json: {
95+
self_check_result: 'GOOD',
96+
issue_log: [],
97+
},
98+
});
99+
});
100+
101+
const pageQueryParams = {
102+
schema: tenantName,
103+
database: tenantName,
104+
tenantPage: 'diagnostics',
105+
};
106+
const tenantPage = new TenantPage(page);
107+
await tenantPage.goto(pageQueryParams);
108+
109+
const diagnostics = new Diagnostics(page);
110+
await diagnostics.clickTab(DiagnosticsTab.Info);
111+
112+
// Healthcheck card should not be visible when status is GOOD with no issues
113+
const healthcheckCard = page.locator('.ydb-healthcheck-preview');
114+
await expect(healthcheckCard).toHaveCount(0);
115+
});
116+
117+
test('Info tab shows healthcheck status when status is GOOD but has issues', async ({page}) => {
118+
// Mock healthcheck API to return GOOD status but with issues (edge case)
119+
await page.route(`**/viewer/json/healthcheck?*`, async (route) => {
120+
await route.fulfill({
121+
json: {
122+
self_check_result: 'GOOD',
123+
issue_log: [
124+
{
125+
id: 'issue-1',
126+
status: 'GREEN',
127+
message: 'Some informational issue',
128+
location: {
129+
database: {
130+
name: tenantName,
131+
},
132+
},
133+
},
134+
],
135+
},
136+
});
137+
});
138+
45139
const pageQueryParams = {
46140
schema: tenantName,
47141
database: tenantName,
@@ -53,9 +147,11 @@ test.describe('Diagnostics Info tab', async () => {
53147
const diagnostics = new Diagnostics(page);
54148
await diagnostics.clickTab(DiagnosticsTab.Info);
55149

150+
// Healthcheck card should be visible when there are issues, even if status is GOOD
56151
const status = await diagnostics.getHealthcheckStatus();
57152
expect(status).toBeTruthy();
58153

154+
// Check for good status class
59155
const isGood = await diagnostics.hasHealthcheckStatusClass(
60156
'ydb-healthcheck-preview__icon_good',
61157
);

0 commit comments

Comments
 (0)