Add Prettier and ESLint tooling (Refs #77)

This commit is contained in:
2026-10-09 15:56:13 -04:00
parent 8ed059b8d3
commit 16469e2d43
711 changed files with 99737 additions and 28286 deletions
+35 -9
View File
@@ -8,38 +8,64 @@ beforeEach(() => {
documentStub = Object.assign(new EventTarget(), { visibilityState: 'visible' });
vi.stubGlobal('document', documentStub);
});
afterEach(() => { stop?.(); stop = undefined; vi.useRealTimers(); vi.unstubAllGlobals(); vi.restoreAllMocks(); });
const visibility = (state: string) => { documentStub.visibilityState = state; documentStub.dispatchEvent(new Event('visibilitychange')); };
afterEach(() => {
stop?.();
stop = undefined;
vi.useRealTimers();
vi.unstubAllGlobals();
vi.restoreAllMocks();
});
const visibility = (state: string) => {
documentStub.visibilityState = state;
documentStub.dispatchEvent(new Event('visibilitychange'));
};
describe('visible page polling', () => {
it('waits for a request to finish before scheduling the next request', async () => {
let finish!: () => void;
const task = vi.fn(() => new Promise<void>(resolve => { finish = resolve; }));
const task = vi.fn(
() =>
new Promise<void>((resolve) => {
finish = resolve;
})
);
stop = pollVisible(task, 1000);
await vi.advanceTimersByTimeAsync(5000);
visibility('visible');
expect(task).toHaveBeenCalledTimes(1);
finish(); await vi.advanceTimersByTimeAsync(999);
finish();
await vi.advanceTimersByTimeAsync(999);
expect(task).toHaveBeenCalledTimes(1);
await vi.advanceTimersByTimeAsync(1);
expect(task).toHaveBeenCalledTimes(2);
});
it('pauses when hidden and refreshes on return, including hiding during a request', async () => {
let finish!: () => void;
const task = vi.fn(() => new Promise<void>(resolve => { finish = resolve; }));
const task = vi.fn(
() =>
new Promise<void>((resolve) => {
finish = resolve;
})
);
stop = pollVisible(task, 1000);
visibility('hidden'); finish();
visibility('hidden');
finish();
await vi.advanceTimersByTimeAsync(5000);
expect(task).toHaveBeenCalledTimes(1);
visibility('visible');
expect(task).toHaveBeenCalledTimes(2);
finish(); stop();
visibility('visible'); await vi.advanceTimersByTimeAsync(5000);
finish();
stop();
visibility('visible');
await vi.advanceTimersByTimeAsync(5000);
expect(task).toHaveBeenCalledTimes(2);
});
it('recovers after a failed request and supports a delayed initial refresh', async () => {
vi.spyOn(console, 'error').mockImplementation(() => {});
const task = vi.fn().mockRejectedValueOnce(new Error('offline')).mockResolvedValue(undefined);
const task = vi
.fn()
.mockRejectedValueOnce(new Error('offline'))
.mockResolvedValue(undefined);
stop = pollVisible(task, 1000, false);
expect(task).not.toHaveBeenCalled();
await vi.advanceTimersByTimeAsync(2000);