import { describe, it, afterEach, expect, $, click, pressKey, sleep, closeAll, csrf } from './runner.js?v=4'; describe('Detail: Done Toggle', () => { afterEach(() => closeAll()); it('done button toggles #done tag', async () => { const res = await fetch('api/cards', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': csrf() }, body: JSON.stringify({ title: '__test_detail_done__', body: 'some text', color: '#38bdf8' }), }).then(r => r.json()); await window._reloadAll?.(); await sleep(200); // Ensure non-split mode if (!$('#board-preview')?.classList.contains('hidden')) { click('#board-split-toggle'); await sleep(100); } // Open detail const cardEl = document.querySelector(`[data-id="${res.id}"]`); if (!cardEl) return; click(cardEl); await sleep(300); // Click done click('#detail-done'); await sleep(300); // Verify card now has #done const updated = await fetch(`api/cards?ids=${res.id}`).then(r => r.json()); expect(updated.find(c => c.id == res.id).tags).toContain('done'); }); }); describe('Detail: Edit from Detail', () => { afterEach(() => closeAll()); it('edit button opens editor with card data', async () => { const res = await fetch('api/cards', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': csrf() }, body: JSON.stringify({ title: '__test_detail_edit__', body: 'edit me', color: '#fb7185' }), }).then(r => r.json()); await window._reloadAll?.(); await sleep(200); if (!$('#board-preview')?.classList.contains('hidden')) { click('#board-split-toggle'); await sleep(100); } const cardEl = document.querySelector(`[data-id="${res.id}"]`); if (!cardEl) return; click(cardEl); await sleep(300); click('#detail-edit'); await sleep(300); expect($('#modal')).toBeVisible(); expect($('#inp-title').value).toBe('__test_detail_edit__'); expect($('#editor-body').value).toContain('edit me'); }); }); describe('Detail: Zen Mode', () => { afterEach(() => closeAll()); it('zen button exists and is clickable', async () => { if (!$('#board-preview')?.classList.contains('hidden')) { click('#board-split-toggle'); await sleep(100); } const card = $('#board [data-id]'); if (!card) return; click(card); await sleep(300); expect($('#detail-zen')).toExist(); }); }); describe('Detail: Backlinks', () => { afterEach(() => closeAll()); it('backlinks section exists', async () => { if (!$('#board-preview')?.classList.contains('hidden')) { click('#board-split-toggle'); await sleep(100); } const card = $('#board [data-id]'); if (!card) return; click(card); await sleep(300); expect($('#detail-backlinks')).toExist(); }); });