browser-fetch.test.js
1 import { describe, expect, it, vi } from 'vitest'; 2 import { browserFetch } from './browser-fetch.js'; 3 function makePage(result) { 4 return { 5 goto: vi.fn(), evaluate: vi.fn().mockResolvedValue(result), 6 getCookies: vi.fn(), snapshot: vi.fn(), click: vi.fn(), 7 typeText: vi.fn(), pressKey: vi.fn(), scrollTo: vi.fn(), 8 getFormState: vi.fn(), wait: vi.fn(), tabs: vi.fn(), 9 networkRequests: vi.fn(), consoleMessages: vi.fn(), 10 scroll: vi.fn(), autoScroll: vi.fn(), 11 installInterceptor: vi.fn(), getInterceptedRequests: vi.fn(), 12 screenshot: vi.fn(), 13 }; 14 } 15 describe('browserFetch', () => { 16 it('returns parsed JSON on success', async () => { 17 const page = makePage({ status_code: 0, data: { ak: 'KEY' } }); 18 const result = await browserFetch(page, 'GET', 'https://creator.douyin.com/api/test'); 19 expect(result).toEqual({ status_code: 0, data: { ak: 'KEY' } }); 20 }); 21 it('throws when status_code is non-zero', async () => { 22 const page = makePage({ status_code: 8, message: 'fail' }); 23 await expect(browserFetch(page, 'GET', 'https://creator.douyin.com/api/test')).rejects.toThrow('Douyin API error 8'); 24 }); 25 it('returns result even when no status_code field', async () => { 26 const page = makePage({ some_field: 'value' }); 27 const result = await browserFetch(page, 'GET', 'https://creator.douyin.com/api/test'); 28 expect(result).toEqual({ some_field: 'value' }); 29 }); 30 });