Skip to content

Commit 76052ac

Browse files
committed
refactor: resolve pull requet comments
- remove fixed timeouts causing flaky results sometimes - export common logic for building string buffers and reuse it, as a helper function - cleanup unncesessary helper frunction in the browser objects
1 parent 6d53546 commit 76052ac

File tree

3 files changed

+38
-35
lines changed

3 files changed

+38
-35
lines changed

tests/playwright/helpers/api/api-keys.ts

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
SetKeyParameters,
88
StreamKeyParameters,
99
} from '../../types'
10+
import { stringToBuffer } from '../utils'
1011

1112
const bufferPathMask = '/databases/databaseId/keys?encoding=buffer'
1213
export class APIKeyRequests {
@@ -23,8 +24,8 @@ export class APIKeyRequests {
2324
databaseParameters.databaseName,
2425
)
2526
const requestBody = {
26-
keyName: Buffer.from(keyParameters.keyName, 'utf-8'),
27-
value: Buffer.from(keyParameters.value, 'utf-8'),
27+
keyName: stringToBuffer(keyParameters.keyName),
28+
value: stringToBuffer(keyParameters.value),
2829
expire: keyParameters?.expire,
2930
}
3031

@@ -46,11 +47,11 @@ export class APIKeyRequests {
4647
databaseParameters.databaseName,
4748
)
4849
const requestBody = {
49-
keyName: Buffer.from(keyParameters.keyName, 'utf-8'),
50+
keyName: stringToBuffer(keyParameters.keyName),
5051
fields: keyParameters.fields.map((fields) => ({
5152
...fields,
52-
field: Buffer.from(fields.field, 'utf-8'),
53-
value: Buffer.from(fields.value, 'utf-8'),
53+
field: stringToBuffer(fields.field),
54+
value: stringToBuffer(fields.value),
5455
})),
5556
expire: keyParameters?.expire,
5657
}
@@ -70,9 +71,9 @@ export class APIKeyRequests {
7071
databaseParameters.databaseName,
7172
)
7273
const requestBody = {
73-
keyName: Buffer.from(keyParameters.keyName, 'utf-8'),
74+
keyName: stringToBuffer(keyParameters.keyName),
7475
elements: keyParameters.elements.map((element) =>
75-
Buffer.from(element, 'utf-8'),
76+
stringToBuffer(element),
7677
),
7778
expire: keyParameters?.expire,
7879
}
@@ -95,12 +96,12 @@ export class APIKeyRequests {
9596
databaseParameters.databaseName,
9697
)
9798
const requestBody = {
98-
keyName: Buffer.from(keyParameters.keyName, 'utf-8'),
99+
keyName: stringToBuffer(keyParameters.keyName),
99100
entries: keyParameters.entries.map((member) => ({
100101
...member,
101102
fields: member.fields.map(({ name, value }) => ({
102-
name: Buffer.from(name, 'utf-8'),
103-
value: Buffer.from(value, 'utf-8'),
103+
name: stringToBuffer(name),
104+
value: stringToBuffer(value),
104105
})),
105106
})),
106107
expire: keyParameters?.expire,
@@ -121,9 +122,9 @@ export class APIKeyRequests {
121122
databaseParameters.databaseName,
122123
)
123124
const requestBody = {
124-
keyName: Buffer.from(keyParameters.keyName, 'utf-8'),
125+
keyName: stringToBuffer(keyParameters.keyName),
125126
members: keyParameters.members.map((member) =>
126-
Buffer.from(member, 'utf-8'),
127+
stringToBuffer(member),
127128
),
128129
expire: keyParameters?.expire,
129130
}
@@ -147,9 +148,9 @@ export class APIKeyRequests {
147148
databaseParameters.databaseName,
148149
)
149150
const requestBody = {
150-
keyName: Buffer.from(keyParameters.keyName, 'utf-8'),
151+
keyName: stringToBuffer(keyParameters.keyName),
151152
members: keyParameters.members.map((member) => ({
152-
name: Buffer.from(member.name, 'utf-8'),
153+
name: stringToBuffer(member.name),
153154
score: member.score,
154155
})),
155156
expire: keyParameters?.expire,
@@ -173,7 +174,7 @@ export class APIKeyRequests {
173174
databaseParameters.databaseName,
174175
)
175176
const requestBody: any = {
176-
keyName: Buffer.from(keyParameters.keyName, 'utf-8'),
177+
keyName: stringToBuffer(keyParameters.keyName),
177178
data: JSON.stringify(keyParameters.value),
178179
}
179180

@@ -221,7 +222,7 @@ export class APIKeyRequests {
221222
databaseName,
222223
)
223224
if (doesKeyExist.length > 0) {
224-
const requestBody = { keyNames: [Buffer.from(keyName, 'utf-8')] }
225+
const requestBody = { keyNames: [stringToBuffer(keyName)] }
225226
const response = await this.apiClient.delete(
226227
bufferPathMask.replace('databaseId', databaseId),
227228
{

tests/playwright/helpers/utils.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,7 @@ export async function navigateToStandaloneInstance(page: Page): Promise<void> {
3232
await expect(db).toBeVisible({ timeout: 5000 })
3333
await db.first().click()
3434
}
35+
36+
export function stringToBuffer(str: string): Buffer {
37+
return Buffer.from(str, 'utf-8')
38+
}

tests/playwright/pageObjects/browser-page.ts

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1333,21 +1333,23 @@ export class BrowserPage extends BasePage {
13331333

13341334
async isKeyDetailsClosed(): Promise<boolean> {
13351335
try {
1336-
// Give a small moment for UI transitions to complete
1337-
await this.page.waitForTimeout(100)
1338-
1339-
// Check if the key details header is gone
1340-
const headerIsVisible = await this.page
1341-
.getByTestId('key-details-header')
1342-
.isVisible()
1343-
1344-
// Check if the close right panel button is not visible
1345-
const closeRightPanelBtn = await this.page
1346-
.getByTestId('close-right-panel-btn')
1347-
.isVisible()
1336+
// Wait for either the header to disappear OR the close button to disappear
1337+
// This ensures we wait for the UI transition to complete
1338+
await expect
1339+
.poll(async () => {
1340+
const headerIsVisible = await this.page
1341+
.getByTestId('key-details-header')
1342+
.isVisible()
1343+
const closeRightPanelBtn = await this.page
1344+
.getByTestId('close-right-panel-btn')
1345+
.isVisible()
1346+
1347+
// Return true if details are closed (header gone OR close button gone)
1348+
return !headerIsVisible || !closeRightPanelBtn
1349+
})
1350+
.toBe(true)
13481351

1349-
// Details are closed if header is gone OR close panel button is not visible
1350-
return !headerIsVisible || !closeRightPanelBtn
1352+
return true
13511353
} catch (error) {
13521354
return false
13531355
}
@@ -1383,10 +1385,6 @@ export class BrowserPage extends BasePage {
13831385
}
13841386
}
13851387

1386-
async getKeyTTL(): Promise<string | null> {
1387-
return this.keyDetailsTTL.textContent()
1388-
}
1389-
13901388
async getAllListElements(): Promise<string[]> {
13911389
// Get all list elements' text content
13921390
const elements = await this.listElementsList.all()
@@ -1487,7 +1485,7 @@ export class BrowserPage extends BasePage {
14871485
}
14881486

14891487
async verifyKeyTTL(expectedTTL?: number): Promise<void> {
1490-
const displayedTTL = await this.getKeyTTL()
1488+
const displayedTTL = await this.keyDetailsTTL.textContent()
14911489
expect(displayedTTL).toContain('TTL:')
14921490

14931491
if (expectedTTL !== undefined) {

0 commit comments

Comments
 (0)