ok
Some checks failed
CI / validate (push) Has been cancelled

This commit is contained in:
isopropilick
2026-08-27 15:00:50 -06:00
parent b35387d841
commit 896c3a121a
19 changed files with 569 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
import assert from 'node:assert/strict';
import fs from 'node:fs';
import os from 'node:os';
import path from 'node:path';
import test from 'node:test';
import { createWdioCucumberAdapter } from '@qacg/qk-test-analytics/adapters/wdio-cucumber';
test('the official WDIO/Cucumber adapter writes portable report data and evidence', async () => {
const directory = fs.mkdtempSync(path.join(os.tmpdir(), 'qkforce-qkta-'));
try {
const reportsFile = path.join(directory, 'media-bucket', 'reports', 'current.json');
const adapter = createWdioCucumberAdapter({
capture: 'always',
filePath: reportsFile,
evidenceRoot: path.join(directory, 'media-bucket'),
runId: 'run-contract',
projectName: 'qkforce-framework-cwq'
});
const scenario = { id: 'scenario-1', name: 'records analytics', tags: [{ name: '@smoke' }] };
const step = { id: 'step-1', keyword: 'Given ', text: 'a configured target' };
await adapter.hooks.before({ browserName: 'chrome' }, ['test/features/example.feature'], {
capabilities: { browserName: 'chrome' },
takeScreenshot: async () => Buffer.from('qkforce').toString('base64')
});
await adapter.hooks.beforeFeature('test/features/example.feature', { name: 'Analytics' });
await adapter.hooks.beforeScenario({ pickle: scenario });
await adapter.hooks.beforeStep(step, scenario);
await adapter.hooks.afterStep(step, scenario, { passed: true, duration: 12 });
await adapter.hooks.afterScenario({ pickle: scenario }, { passed: true, duration: 25 });
await adapter.hooks.afterFeature('test/features/example.feature', { name: 'Analytics' });
await adapter.hooks.after(0);
const report = JSON.parse(fs.readFileSync(reportsFile, 'utf8'));
const execution = report['run-contract'];
assert.equal(execution.execution_summary.project_name, 'qkforce-framework-cwq');
assert.equal(execution.Analytics['records analytics'].test_summary.status, 'PASSED');
assert.equal(execution.Analytics['records analytics']['a configured target'].status, 'PASSED');
assert.ok(fs.readdirSync(path.join(directory, 'media-bucket', 'screenshots')).some(name => name.endsWith('.png')));
} finally {
fs.rmSync(directory, { recursive: true, force: true });
}
});