Import normalizer: offline tool to normalize the raw archive spreadsheets #663

Merged
marcel merged 172 commits from docs/import-migration into main 2026-05-28 15:05:51 +02:00
Showing only changes of commit 4581fc0b1f - Show all commits

View File

@@ -283,7 +283,15 @@ describe('PersonMentionEditor — AC-2/3: search input drives fetch', () => {
const fetchesBeforeClear = fetchMock.mock.calls.length; const fetchesBeforeClear = fetchMock.mock.calls.length;
await userEvent.clear(page.getByRole('searchbox')); // `fill('')` atomically sets the input value in a single input event —
// same rationale as the `fill('Walter')` call above. `userEvent.clear`
// deletes per-keystroke, so intermediate values 'Au'/'A' transit through
// the bound `searchQuery` and each schedules a debounced fetch. Under
// CI-runner jitter, if two consecutive keystrokes land more than
// SEARCH_DEBOUNCE_MS (150 ms) apart, an intermediate timer fires before
// the input reaches '' and adds a phantom call — unrelated to the
// contract under test, which is "empty query => no fetch".
await page.getByRole('searchbox').fill('');
// Negative assertion: wait past the debounce window to confirm no // Negative assertion: wait past the debounce window to confirm no
// trailing fetch was scheduled. Removing this wait would mask a // trailing fetch was scheduled. Removing this wait would mask a