src/app/api/badge/route.test.ts(73,87): error TS2345: Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
Type 'undefined' is not assignable to type 'string'.
src/lib/citation/formatters/generic.test.ts(62,13): error TS2741: Property 'institution' is missing in type '{ sourceType: "thesis"; accessType: "web"; title: string; degree: "masters"; }' but required in type 'ThesisFields'.
src/lib/citation/formatters/generic.test.ts(296,11): error TS2741: Property 'conferenceName' is missing in type '{ sourceType: "conference-paper"; accessType: "web"; title: string; proceedingsTitle: string; pageRange: string; publicationDate: { year: number; }; }' but required in type 'ConferencePaperFields'.
�[90m117| �[39m �[34mexpect�[39m(response�[33m.�[39mstatus)�[33m.�[39m�[34mtoBe�[39m(�[34m504�[39m)�[33m;�[39m
�[90m | �[39m �[31m^�[39m
�[90m118| �[39m �[34mexpect�[39m(data�[33m.�[39msuccess)�[33m.�[39m�[34mtoBe�[39m(�[35mfalse�[39m)�[33m;�[39m
�[90m119| �[39m �[34mexpect�[39m(data�[33m.�[39merror)�[33m.�[39m�[34mtoContain�[39m(�[32m'timed out'�[39m)�[33m;�[39m
�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/4]⎯�[22m�[39m
�[41m�[1m FAIL �[22m�[49m src/app/api/lookup/url/route.test.ts�[2m > �[22mURL Lookup API�[2m > �[22mshould handle non-200 responses
�[31m�[1mAssertionError�[22m: expected 400 to be 502 // Object.is equality�[39m
�[32m- Expected�[39m
�[31m+ Received�[39m
�[32m- 502�[39m
�[31m+ 400�[39m
�[36m �[2m❯�[22m src/app/api/lookup/url/route.test.ts:�[2m138:29�[22m�[39m
�[90m136| �[39m �[35mconst�[39m data �[33m=�[39m �[35mawait�[39m response�[33m.�[39m�[34mjson�[39m()�[33m;�[39m
�[90m137| �[39m
�[90m138| �[39m �[34mexpect�[39m(response�[33m.�[39mstatus)�[33m.�[39m�[34mtoBe�[39m(�[34m502�[39m)�[33m;�[39m
�[90m | �[39m �[31m^�[39m
�[90m139| �[39m �[34mexpect�[39m(data�[33m.�[39msuccess)�[33m.�[39m�[34mtoBe�[39m(�[35mfalse�[39m)�[33m;�[39m
�[90m140| �[39m })�[33m;�[39m
�[31m�[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/4]⎯�[22m�[39m
�[2m Test Files �[22m �[1m�[31m1 failed�[39m�[22m�[2m | �[22m�[1m�[32m40 passed�[39m�[22m�[90m (41)�[39m
�[2m Tests �[22m �[1m�[31m4 failed�[39m�[22m�[2m | �[22m�[1m�[32m545 passed�[39m�[22m�[90m (549)�[39m
�[2m Start at �[22m 03:39:01
�[2m Duration �[22m 4.28s�[2m (transform 1.51s, setup 0ms, import 3.93s, tests 962ms, environment 8ms)�[22m
::error file=/home/runner/work/opencitation/opencitation/src/app/api/lookup/url/route.test.ts,title=src/app/api/lookup/url/route.test.ts > URL Lookup API > should extract metadata from HTML,line=83,column=29::AssertionError: expected 400 to be 200 // Object.is equality0X0P+00X0P+0- Expected0X0P+0+ Received0X0P+00X0P+0- 2000X0P+0+ 4000X0P+00X0P+0 ❯ src/app/api/lookup/url/route.test.ts:83:290X0P+00X0P+0
::error file=/home/runner/work/opencitation/opencitation/src/app/api/lookup/url/route.test.ts,title=src/app/api/lookup/url/route.test.ts > URL Lookup API > should handle fetch errors,line=100,column=29::AssertionError: expected 400 to be 500 // Object.is equality0X0P+00X0P+0- Expected0X0P+0+ Received0X0P+00X0P+0- 5000X0P+0+ 4000X0P+00X0P+0 ❯ src/app/api/lookup/url/route.test.ts:100:290X0P+00X0P+0
::error file=/home/runner/work/opencitation/opencitation/src/app/api/lookup/url/route.test.ts,title=src/app/api/lookup/url/route.test.ts > URL Lookup API > should handle timeout errors,line=117,column=29::AssertionError: expected 400 to be 504 // Object.is equality0X0P+00X0P+0- Expected0X0P+0+ Received0X0P+00X0P+0- 5040X0P+0+ 4000X0P+00X0P+0 ❯ src/app/api/lookup/url/route.test.ts:117:290X0P+00X0P+0
::error file=/home/runner/work/opencitation/opencitation/src/app/api/lookup/url/route.test.ts,title=src/app/api/lookup/url/route.test.ts > URL Lookup API > should handle non-200 responses,line=138,column=29::AssertionError: expected 400 to be 502 // Object.is equality0X0P+00X0P+0- Expected0X0P+0+ Received0X0P+00X0P+0- 5020X0P+0+ 4000X0P+00X0P+0 ❯ src/app/api/lookup/url/route.test.ts:138:290X0P+00X0P+0
Health Check Failed — 2026-05-02 03:39 UTC
✅ Lint passed
❌ Type check
❌ Tests