From 0254535b561d4a8ea5c1edb12b235e7aca95dd32 Mon Sep 17 00:00:00 2001 From: Valentin Kirilov Date: Fri, 18 Jul 2025 13:18:00 +0300 Subject: [PATCH] test: verify edit operation for string key value in browsers module * added e2e test to verify whether the edit key value functionality is working fine for the string type in the browser module re #RI-6570 --- tests/playwright/pageObjects/browser-page.ts | 25 +++++ .../browser/keys-edit/edit-string-key.spec.ts | 95 +++++++++++++++++++ 2 files changed, 120 insertions(+) create mode 100644 tests/playwright/tests/browser/keys-edit/edit-string-key.spec.ts diff --git a/tests/playwright/pageObjects/browser-page.ts b/tests/playwright/pageObjects/browser-page.ts index 4de5d9a4c4..073cb8b004 100755 --- a/tests/playwright/pageObjects/browser-page.ts +++ b/tests/playwright/pageObjects/browser-page.ts @@ -1693,4 +1693,29 @@ export class BrowserPage extends BasePage { expect(displayedTTL).toContain('TTL:') expect(displayedTTL).not.toContain('No limit') } + + async cancelStringKeyValueEdit(newValue: string): Promise { + await this.editKeyValueButton.click() + await this.stringKeyValueInput.clear() + await this.stringKeyValueInput.fill(newValue) + await this.keyDetailsHeader.click() + } + + async waitForKeyLengthToUpdate(expectedLength: string): Promise { + await expect + .poll(async () => { + const keyLength = await this.getKeyLength() + return keyLength + }) + .toBe(expectedLength) + } + + async waitForStringValueToUpdate(expectedValue: string): Promise { + await expect + .poll(async () => { + const currentValue = await this.getStringKeyValue() + return currentValue + }) + .toContain(expectedValue) + } } diff --git a/tests/playwright/tests/browser/keys-edit/edit-string-key.spec.ts b/tests/playwright/tests/browser/keys-edit/edit-string-key.spec.ts new file mode 100644 index 0000000000..67820b6311 --- /dev/null +++ b/tests/playwright/tests/browser/keys-edit/edit-string-key.spec.ts @@ -0,0 +1,95 @@ +import { faker } from '@faker-js/faker' + +import { BrowserPage } from '../../../pageObjects/browser-page' +import { test, expect } from '../../../fixtures/test' +import { ossStandaloneConfig } from '../../../helpers/conf' +import { + addStandaloneInstanceAndNavigateToIt, + navigateToStandaloneInstance, +} from '../../../helpers/utils' + +test.describe('Browser - Edit Key Operations - String Key Editing', () => { + let browserPage: BrowserPage + let keyName: string + let cleanupInstance: () => Promise + + test.beforeEach(async ({ page, api: { databaseService } }) => { + browserPage = new BrowserPage(page) + keyName = faker.string.alphanumeric(10) + cleanupInstance = await addStandaloneInstanceAndNavigateToIt( + page, + databaseService, + ) + + await navigateToStandaloneInstance(page) + }) + + test.afterEach(async ({ api: { keyService } }) => { + // Clean up: delete the key if it exists + try { + await keyService.deleteKeyByNameApi( + keyName, + ossStandaloneConfig.databaseName, + ) + } catch (error) { + // Key might already be deleted in test, ignore error + } + + await cleanupInstance() + }) + + test('should edit string key value successfully', async ({ + api: { keyService }, + }) => { + // Arrange: Create a string key + const originalValue = faker.lorem.words(3) + const newValue = faker.lorem.words(4) + + await keyService.addStringKeyApi( + { keyName, value: originalValue }, + ossStandaloneConfig, + ) + + // Open key details and verify original value + await browserPage.searchByKeyName(keyName) + await browserPage.openKeyDetailsByKeyName(keyName) + + const displayedOriginalValue = await browserPage.getStringKeyValue() + expect(displayedOriginalValue).toContain(originalValue) + + // Edit the key value + await browserPage.editStringKeyValue(newValue) + + // Wait for value and length to update + await browserPage.waitForStringValueToUpdate(newValue) + await browserPage.waitForKeyLengthToUpdate(newValue.length.toString()) + }) + + test('should cancel string key value edit operation', async ({ + api: { keyService }, + }) => { + // Arrange: Create a string key + const originalValue = faker.lorem.words(3) + const attemptedNewValue = faker.lorem.words(4) + + await keyService.addStringKeyApi( + { keyName, value: originalValue }, + ossStandaloneConfig, + ) + + // Open key details and verify original value + await browserPage.searchByKeyName(keyName) + await browserPage.openKeyDetailsByKeyName(keyName) + + const displayedOriginalValue = await browserPage.getStringKeyValue() + expect(displayedOriginalValue).toContain(originalValue) + + // Start editing but cancel + await browserPage.cancelStringKeyValueEdit(attemptedNewValue) + + // Verify the original value is still displayed + const displayedValueAfterCancel = await browserPage.getStringKeyValue() + expect(displayedValueAfterCancel).toContain(originalValue) + expect(displayedValueAfterCancel).not.toContain(attemptedNewValue) + }) +})