Files
crank/apps/ui/tests/e2e/secrets.spec.js
T
github-ops 2234529a20
Deploy / deploy (push) Successful in 1m33s
CI / Rust Checks (push) Successful in 4m52s
CI / UI Checks (push) Successful in 4s
CI / Deployment Manifests (push) Successful in 2s
CI / Frontend E2E (push) Successful in 4m32s
Fix secret kind field visibility
2026-06-20 11:31:57 +00:00

68 lines
2.7 KiB
JavaScript

const { test, expect } = require('@playwright/test');
const { browserJson, getCurrentWorkspace, localized, login, uniqueName } = require('./helpers');
test('created workspace secret renders styled table actions', async ({ page }) => {
const secretName = uniqueName('ui_secret');
await login(page);
const workspace = await getCurrentWorkspace(page);
await browserJson(
page,
'POST',
`/api/admin/workspaces/${encodeURIComponent(workspace.id)}/secrets`,
{
name: secretName,
kind: 'token',
value: 'demo-secret-value',
},
);
await page.goto('/secrets');
const row = page.locator('#secrets-tbody tr').filter({ hasText: secretName }).first();
await expect(row).toBeVisible();
await expect(row.locator('[data-testid="secret-rotate-action"]')).toHaveClass(/btn-secondary/);
await expect(row.locator('[data-testid="secret-rotate-action"]')).toHaveClass(/table-action-btn/);
await expect(row.locator('[data-testid="secret-delete-action"]')).toHaveClass(/btn-danger/);
await expect(row.locator('[data-testid="secret-delete-action"]')).toHaveClass(/table-action-btn/);
});
test('secret modal shows fields for selected secret kind only', async ({ page }) => {
await login(page);
await page.goto('/secrets');
await page.locator('[data-testid="secret-create-button"]').click();
await expect(page.locator('[data-testid="secret-create-modal"]')).toBeVisible();
const stringField = page.locator('[data-kind-field="string"]');
const basicField = page.locator('[data-kind-field="basic"]');
const jsonField = page.locator('[data-kind-field="json"]');
const kindSelect = page.locator('[data-testid="secret-kind-select"]');
await expect(stringField).toBeVisible();
await expect(basicField).toBeHidden();
await expect(jsonField).toBeHidden();
await kindSelect.selectOption('username_password');
await expect(stringField).toBeHidden();
await expect(basicField).toBeVisible();
await expect(jsonField).toBeHidden();
await kindSelect.selectOption('header');
await expect(stringField).toBeVisible();
await expect(page.locator('#secret-string-label')).toHaveText(localized('Header value', 'Значение заголовка'));
await expect(basicField).toBeHidden();
await expect(jsonField).toBeHidden();
await kindSelect.selectOption('generic');
await expect(stringField).toBeHidden();
await expect(basicField).toBeHidden();
await expect(jsonField).toBeVisible();
await kindSelect.selectOption('token');
await expect(stringField).toBeVisible();
await expect(page.locator('#secret-string-label')).toHaveText(localized('Token value', 'Значение токена'));
await expect(basicField).toBeHidden();
await expect(jsonField).toBeHidden();
});