wip tests

This commit is contained in:
evilchili 2026-06-20 11:41:21 -07:00
parent fe405cb393
commit 0758105e92

View File

@ -26,6 +26,10 @@ const PORT = (() => {
const portArg = process.argv.find(arg => arg.startsWith('--port='));
return portArg ? parseInt(portArg.split('=')[1]) : 5023;
})();
const FILTER = (() => {
const filterArg = process.argv.find(arg => arg.startsWith('--filter='));
return filterArg ? filterArg.split('=')[1] : null;
})();
const DELAY = 20; // ms between keystrokes
// ── State ─────────────────────────────────────────────────────────────────────
@ -169,6 +173,9 @@ function assert(condition, message) {
}
async function test(name, fn) {
if (FILTER && !name.toLowerCase().includes(FILTER.toLowerCase())) {
return;
}
try {
await fn();
passed++;
@ -286,6 +293,60 @@ async function runTests() {
assert(markdown === '***both***', `Expected "***both***", got: "${markdown}"`);
});
await test('nested bold and italic are handled correctly', async() => {
const NESTED_CASES = [
{
name: 'close-side ambiguity, outer=bold (bold *italic***)',
markdown: '**bold *italic***',
outerClass: 'md-bold',
innerClass: 'md-italic',
},
{
name: 'close-side ambiguity, outer=italic (*italic **bold***)',
markdown: '*italic **bold***',
outerClass: 'md-italic',
innerClass: 'md-bold',
},
{
name: 'open-side ambiguity, outer=bold (***italic* bold**)',
markdown: '***italic* bold**',
outerClass: 'md-bold',
innerClass: 'md-italic',
},
{
name: 'open-side ambiguity, outer=italic (***bold** italic*)',
markdown: '***bold** italic*',
outerClass: 'md-italic',
innerClass: 'md-bold',
},
];
for (const testCase of NESTED_CASES) {
await test(testCase.name, async () => {
await resetEditor();
await typeString(testCase.markdown);
const markdown = await getMarkdown();
assert(
markdown === testCase.markdown,
`Round-trip failed.\nExpected: "${testCase.markdown}"\nGot: "${markdown}"`
);
const html = await getHTML();
const outerIndex = html.indexOf(testCase.outerClass);
const innerIndex = html.indexOf(testCase.innerClass);
assert(
outerIndex !== -1 && innerIndex !== -1,
`Missing expected classes (${testCase.outerClass}, ${testCase.innerClass}) in: ${html}`
);
assert(
outerIndex < innerIndex,
`Expected ${testCase.outerClass} to wrap (appear before) ${testCase.innerClass} in: ${html}`
);
});
}
});
await test('`code` produces md-code span', async () => {
await resetEditor();
await typeString('`code`');