const test = require('node:test');
const assert = require('node:assert/strict');
const fs = require('node:fs');
test('step definitions module exposes ordered shared step metadata', () => {
const source = fs.readFileSync('data/step-definitions.js', 'utf8');
const globalScope = {};
const api = new Function('self', `${source}; return self.MultiPageStepDefinitions;`)(globalScope);
const steps = api.getSteps();
assert.equal(Array.isArray(steps), true);
assert.equal(steps.length >= 9, true);
assert.deepStrictEqual(
steps.map((step) => step.order),
steps.map((step) => step.order).slice().sort((left, right) => left - right)
);
assert.deepStrictEqual(
steps.map((step) => step.key),
[
'open-chatgpt',
'submit-signup-email',
'fill-password',
'fetch-signup-code',
'fill-profile',
'oauth-login',
'fetch-login-code',
'confirm-oauth',
'platform-verify',
]
);
});
test('sidepanel html loads shared step definitions before sidepanel bootstrap', () => {
const html = fs.readFileSync('sidepanel/sidepanel.html', 'utf8');
const definitionsIndex = html.indexOf('');
const sidepanelIndex = html.indexOf('');
assert.notEqual(definitionsIndex, -1);
assert.notEqual(sidepanelIndex, -1);
assert.ok(definitionsIndex < sidepanelIndex);
});