43
test/unit/wdio-qkta-adapter.test.mjs
Normal file
43
test/unit/wdio-qkta-adapter.test.mjs
Normal 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 });
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user