/
githubmirror
/
grafana
Обзор
Документация
Войти
/
githubmirror
/
grafana
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
e2e-playwright/plugin-e2e/plugin-e2e-api-tests/as-admin-user/openFeature.spec.ts
113 строк
4 KB
Erik Sundell
Chore: Add OpenFeature tests (#117055)
30 янв 2026, 11:45
Не верифицирован
30 янв 2026, 11:45
112a2fb
Код
Авторство
О чём код?
import { expect, test } from '@grafana/plugin-e2e'; test.use({ openFeature: { flags: { testFlagTrue: true, testFlagFalse: false, }, }, }); test( 'should intercept OFREP bulk evaluation and override flags via openFeature', { tag: ['@plugins'], }, async ({ page, selectors, namespace }) => { // set up a listener to capture the OFREP response const responsePromise = page.waitForResponse( (response) => response.url().includes(selectors.apis.OpenFeature.ofrepBulkPath(namespace)) && !response.url().endsWith('/'), { timeout: 5000 } ); // trigger a navigation that would cause OpenFeature to fetch flags await page.goto('/'); // wait for the OFREP response (may not happen if OpenFeature is not enabled in the Grafana instance) try { const response = await responsePromise; const body = await response.json(); // response should contain our overridden flags from openFeature const testFlagTrue = body.flags?.find((f: { key: string }) => f.key === 'testFlagTrue'); const testFlagFalse = body.flags?.find((f: { key: string }) => f.key === 'testFlagFalse'); if (testFlagTrue) { expect(testFlagTrue.value).toBe(true); expect(testFlagTrue.reason).toBe('STATIC'); expect(testFlagTrue.variant).toBe('playwright-override'); } if (testFlagFalse) { expect(testFlagFalse.value).toBe(false); expect(testFlagFalse.reason).toBe('STATIC'); expect(testFlagFalse.variant).toBe('playwright-override'); } } catch { console.log('OFREP endpoint not called - OpenFeature may not be enabled'); } } ); test( 'should merge custom openFeature flags with backend default flags', { tag: ['@plugins'], }, async ({ page, selectors, namespace }) => { const responsePromise = page.waitForResponse( (response) => response.url().includes(selectors.apis.OpenFeature.ofrepBulkPath(namespace)) && !response.url().endsWith('/'), { timeout: 5000 } ); // wait for the OFREP response try { const response = await responsePromise; const body = await response.json(); // define how many custom flags we set const customFlagCount = 2; // testFlagTrue and testFlagFalse // verify we have more flags than just our custom ones (backend flags should be present) expect(body.flags.length).toBeGreaterThan(customFlagCount); // custom flags are present and overridden const customFlags = body.flags.filter((f: { variant: string }) => f.variant === 'playwright-override'); expect(customFlags.length).toBeGreaterThanOrEqual(customFlagCount); // backend flags (without playwright-override variant) are still present const backendFlags = body.flags.filter((f: { variant: string }) => f.variant !== 'playwright-override'); expect(backendFlags.length).toBeGreaterThan(0); // our specific custom flags have the correct values const testFlagTrue = body.flags.find((f: { key: string }) => f.key === 'testFlagTrue'); const testFlagFalse = body.flags.find((f: { key: string }) => f.key === 'testFlagFalse'); expect(testFlagTrue?.value).toBe(true); expect(testFlagTrue?.variant).toBe('playwright-override'); expect(testFlagFalse?.value).toBe(false); expect(testFlagFalse?.variant).toBe('playwright-override'); } catch { console.log('OFREP endpoint not called - OpenFeature may not be enabled'); } } ); test( 'should retrieve flag values using getBooleanOpenFeatureFlag fixture', { tag: ['@plugins'], }, async ({ getBooleanOpenFeatureFlag }) => { // should retrieve our overridden flags const testFlagTrue = await getBooleanOpenFeatureFlag('testFlagTrue'); const testFlagFalse = await getBooleanOpenFeatureFlag('testFlagFalse'); expect(testFlagTrue).toBe(true); expect(testFlagFalse).toBe(false); } );