Skip to content

Run Tests

Run Tests #4289

Triggered via schedule February 22, 2026 01:26
Status Failure
Total duration 23m 14s
Artifacts

ci.yml

on: schedule
Fit to window
Zoom out
Zoom in

Annotations

10 errors
src/schema.test.ts > schema matches sub_body_part sub_limb_debug_tail: src/schema.test.ts#L88
Error: [File: data/json/body_parts.json#L894-L901] /side must be number, but was 'both' ❯ src/schema.test.ts:88:15
src/schema.test.ts > schema matches sub_body_part sub_limb_debug: src/schema.test.ts#L88
Error: [File: data/json/body_parts.json#L886-L893] /side must be number, but was 'both' ❯ src/schema.test.ts:88:15
src/all.4.test.ts > render item mask_gas: src/testRender.ts#L93
AssertionError: expected '[ gas mask General Materialmalleable …' not to match /undefined|NaN|object Object/ - Expected: /undefined|NaN|object Object/ + Received: "[ gas mask General Materialmalleable rubber (60%)Plastic (40%) Volume1.54 LWeight0.49 kgLength27 cmCompatible Magazinesgas mask cartridge FlagsSKINTIGHT (This clothing lies close to the skin.) NORMAL (This gear fits like normal clothing.) SLEEP_IGNORE VARSIZE PADDED (This item has notable padding and will be comfortable worn without clothing under it.) Disassembles Into1 40mm filter port1 inhalation valve1 panoramic lens chunk of rubber (10) Tools Required 1 tool with cutting of 2 or more. UsagePressurise and suction test A full-face, industrial-grade respirator made from a solid black silicon and butyl rubber blend, providing decent user comfort in addition to a clear field of view and a secure fit thanks to the mask's single-element visor and 6-point head harness. Provided that a filter canister's been screwed into the right-side filter port and the respirator's been prepared, it'll do an admirable job at preventing smoke, gas, and contaminants derived from chemical and lab work from taking up residence in your organs. Armor LayerClose to skin Warmth40 head (crown, nape, forehead) Encumbrance (fits) 10 (poor fit) 20 Coverage26% ProtectionAcid1.23Heat0.34Environ.3 Cotton Blendmalleable rubber Thickness 0.2mm2.0mm Coverage 42%57% Bash 0.2010.00 Cut 0.202.00 Ballistic 0.202.00 eyes Encumbrance (fits) 5 (poor fit) 10 CoverageDefault100% ProtectionAcid2.70Heat0.30Environ.3 Transparent Impact Resistant Plastic Thickness 2.0mm Coverage 100% Bash 8.00 Cut 6.00 Ballistic 3.00 mouth (lips, nose, chin, cheeks) Encumbrance (fits) 30–50 (poor fit) 40–60 Coverage100% ProtectionAcid2.26Heat0.68Environ.3 malleable rubberPlastic Thickness 2.0mm1.0mm Coverage 100%28% Bash 10.002.00 Cut 2.002.00 Ballistic 2.001.00 Muzzles (lips, nose, chin, cheeks) Encumbrance (fits) 30–50 (poor fit) 40–60 Coverage0% ProtectionAcid0.00Heat0.00Environ.3 malleable rubberPlastic Thickness NaNmmNaNmm Coverage 0%0% Bash NaNNaN Cut NaNNaN Ballistic NaNNaN Pockets DescriptionA number of external brackets arranged around the eyepiece to retain an outer attachment.Volume Capacity50 mlWeight Capacity60 gRigidNoMax Item Length17 cmMoves to Remove Item250Flag RestrictionPANORAMIC_OUTSERT DescriptionA space behind the visor designed to accommodate the installation of inserts.Volume Capacity50 mlWeight Capacity50 gRigidYesMax Item Length10 cmMoves to Remove Item380Flag RestrictionPANORAMIC_INSERT Component Of [ gas mask[ gas mask[ heavy survivor mask[ heavy survivor mask[ heavy survivor mask[ rebreather mask[ rebreather mask[ survivor firemask[ survivor firemask[ survivor firemask[ survivor half mask[ survivor half mask[ survivor half mask[ survivor mask[ survivor mask[ survivor mask Tool For Crafting ~ acetic acid3 brass knuckles (pair)3 brass knuckles (pair)3 brass knuckles (pair)= formic acid= hydrochloric acid~ methanol= sulfuric acid~ weak glue Obtaining Craft Primary Skilltailoring (3) Other Skillsfabrication (1) Proficiencies Fabric Waterproofing (2× time, 0.25 skill bonus) Advanced Polymer Sewing (2× time, 0.25 skill bonus) Time to Complete1 hActivity LevelLight Batch Time Savingsnone Tools Required 1 tool with bolt turning of 1 or more. Components 1 ski goggles OR 2 swim goggles 3 filter masks 1 rubber hose charcoal (20) Autolearn No Written In A History of Firefighting (3)Survival Under Atomic Attack (3)Guide to Advanced Emergency Care (3)Art and Science of Chemical Warfare (3)Advanced Physical Chemistry (4)chemistry textbook (4) Recipe JSON { \"result\": \"mask_gas\", \"type\": \"recipe\", \"activity_level\": \"LIGHT_EXERCISE\", \"category\": \"CC_*\", \"subcategory\": \"CSC_*_NESTED\", \"skill_used\": \"tailor\", \"difficulty\": 3, \"skills_required\": [ \"fabrication\", 1 ], \"time\": \"1 h\", \"decomp_learn\": 3, \"book_learn\": [ [ \"textbook_fireman\", 3 ],
src/all.4.test.ts > render item debug_weather_check: src/testRender.ts#L93
AssertionError: expected '; debug weather reporter General Mate…' not to match /undefined|NaN|object Object/ - Expected: /undefined|NaN|object Object/ + Received: "; debug weather reporter General MaterialPlastic Volume0.00 LWeight0.00 kgLength1 cmUsage[object Object] Reports current weather. Obtaining Raw JSON { \"id\": \"debug_weather_check\", \"type\": \"ITEM\", \"subtypes\": [ \"TOOL\" ], \"category\": \"tools\", \"name\": { \"str_sp\": \"debug weather reporter\", \"//~\": \"NO_I18N\" }, \"description\": { \"str\": \"Reports current weather.\", \"//~\": \"NO_I18N\" }, \"weight\": \"1 g\", \"volume\": \"1 ml\", \"material\": [ \"plastic\" ], \"symbol\": \";\", \"color\": \"light_gray\", \"use_action\": { \"type\": \"effect_on_conditions\", \"menu_text\": { \"str\": \"Check weather\", \"//~\": \"NO_I18N\" }, \"effect_on_conditions\": [ { \"id\": \"EOC_REPORT_WEATHER\", \"effect\": [ { \"math\": [ \"_moon_phase = moon_phase()\" ] }, { \"math\": [ \"_temperature = celsius(weather('temperature'))\" ] }, { \"math\": [ \"_humidity = weather('humidity')\" ] }, { \"math\": [ \"_pressure = weather('pressure')\" ] }, { \"math\": [ \"_windpower = weather('windpower')\" ] }, { \"math\": [ \"_precipitation = weather('precipitation')\" ] }, { \"message\": \"moon_phase: <context_val:moon_phase>\" }, { \"message\": \"temperature: <context_val:temperature> °C\" }, { \"message\": \"humidity: <context_val:humidity> %\" }, { \"message\": \"pressure: <context_val:pressure> mbar\" }, { \"message\": \"windpower: <context_val:windpower> mph\" }, { \"message\": \"precipitation: <context_val:precipitation> mm/h\" } ] } ] } } View / Edit on GitHub" ❯ src/testRender.ts:93:31
src/all.3.test.ts > render item pat_earpiece_on: src/data.ts#L358
Error: unknown object "h" of type "body_part" ❯ CddaData.byId src/data.ts:358:13 ❯ instance$ src/types/item/ArmorInfo.svelte:69:21 ❯ init node_modules/svelte/internal/index.mjs:2122:11 ❯ new ArmorInfo$ src/types/item/ArmorInfo.svelte:2457:33 ❯ createProxiedComponent node_modules/svelte-hmr/runtime/svelte-hooks.js:341:9 ❯ new ProxyComponent node_modules/svelte-hmr/runtime/proxy.js:242:29 ❯ new Proxy<ArmorInfo> node_modules/svelte-hmr/runtime/proxy.js:349:11 ❯ Array.create_else_block$ src/types/Item.svelte:3639:15 ❯ create_if_block$_24 src/types/Item.svelte:3593:99 ❯ create_fragment src/types/Item.svelte:5998:34
src/all.3.test.ts > render item debug_dimension_traveller: src/testRender.ts#L93
AssertionError: expected '; debug dimension traveller General M…' not to match /undefined|NaN|object Object/ - Expected: /undefined|NaN|object Object/ + Received: "; debug dimension traveller General MaterialPlastic Volume0.00 LWeight0.00 kgLength1 cmUsage[object Object] Allows you to pick a dimension to teleport to. Travellers are adviced to use Debug Phase Movement. To teleport back to main dimension, just leave both empty. Obtaining Raw JSON { \"id\": \"debug_dimension_traveller\", \"type\": \"ITEM\", \"subtypes\": [ \"TOOL\" ], \"category\": \"tools\", \"name\": { \"str_sp\": \"debug dimension traveller\", \"//~\": \"NO_I18N\" }, \"description\": { \"str\": \"Allows you to pick a dimension to teleport to. Travellers are adviced to use Debug Phase Movement. To teleport back to main dimension, just leave both empty.\", \"//~\": \"NO_I18N\" }, \"weight\": \"1 g\", \"volume\": \"1 ml\", \"material\": [ \"plastic\" ], \"symbol\": \";\", \"color\": \"light_gray\", \"use_action\": { \"type\": \"effect_on_conditions\", \"menu_text\": { \"str\": \"Change dimension\", \"//~\": \"NO_I18N\" }, \"effect_on_conditions\": [ \"EOC_dimension_swap_test\" ] } } View / Edit on GitHub" ❯ src/testRender.ts:93:31
src/all.2.test.ts > render item mask_gas_xs: src/testRender.ts#L93
AssertionError: expected '[ gas mask General Materialmalleable …' not to match /undefined|NaN|object Object/ - Expected: /undefined|NaN|object Object/ + Received: "[ gas mask General Materialmalleable rubber (60%)Plastic (40%) Volume1.15 LWeight0.37 kgLength27 cmCompatible Magazinesgas mask cartridge FlagsVARSIZE UNDERSIZE PREFIX_XS SLEEP_IGNORE UsagePressurise and suction test A full-face, industrial-grade respirator made from a solid black silicon and butyl rubber blend, providing decent user comfort in addition to a clear field of view and a secure fit thanks to the mask's single-element visor and 6-point head harness. Provided that a filter canister's been screwed into the right-side filter port and the respirator's been prepared, it'll do an admirable job at preventing smoke, gas, and contaminants derived from chemical and lab work from taking up residence in your organs. Armor LayerNormal Warmth40 head (crown, nape, forehead) Encumbrance (fits) 10 (poor fit) 20 Coverage26% ProtectionAcid1.23Heat0.34Environ.3 Cotton Blendmalleable rubber Thickness 0.2mm2.0mm Coverage 42%57% Bash 0.2010.00 Cut 0.202.00 Ballistic 0.202.00 eyes Encumbrance (fits) 5 (poor fit) 10 CoverageDefault100% ProtectionAcid2.70Heat0.30Environ.3 Transparent Impact Resistant Plastic Thickness 2.0mm Coverage 100% Bash 8.00 Cut 6.00 Ballistic 3.00 mouth (lips, nose, chin, cheeks) Encumbrance (fits) 30–50 (poor fit) 40–60 Coverage100% ProtectionAcid2.26Heat0.68Environ.3 malleable rubberPlastic Thickness 2.0mm1.0mm Coverage 100%28% Bash 10.002.00 Cut 2.002.00 Ballistic 2.001.00 Muzzles (lips, nose, chin, cheeks) Encumbrance (fits) 30–50 (poor fit) 40–60 Coverage0% ProtectionAcid0.00Heat0.00Environ.3 malleable rubberPlastic Thickness NaNmmNaNmm Coverage 0%0% Bash NaNNaN Cut NaNNaN Ballistic NaNNaN Pockets DescriptionA number of external brackets arranged around the eyepiece to retain an outer attachment.Volume Capacity50 mlWeight Capacity60 gRigidNoMax Item Length17 cmMoves to Remove Item250Flag RestrictionPANORAMIC_OUTSERT DescriptionA space behind the visor designed to accommodate the installation of inserts.Volume Capacity50 mlWeight Capacity50 gRigidYesMax Item Length10 cmMoves to Remove Item380Flag RestrictionPANORAMIC_INSERT Component Of [ heavy survivor mask[ heavy survivor mask[ heavy survivor mask[ survivor firemask[ survivor firemask[ survivor firemask[ survivor half mask[ survivor half mask[ survivor half mask[ survivor mask[ survivor mask[ survivor mask Tool For Crafting ~ acetic acid3 brass knuckles (pair)3 brass knuckles (pair)3 brass knuckles (pair)= formic acid= hydrochloric acid~ methanol= sulfuric acid~ weak glue Obtaining Craft Primary Skilltailoring (3) Other Skillsfabrication (1) Proficiencies Fabric Waterproofing (2× time, 0.25 skill bonus) Advanced Polymer Sewing (2× time, 0.25 skill bonus) Time to Complete1 hActivity LevelLight Batch Time Savingsnone Tools Required 1 tool with bolt turning of 1 or more. Components 1 ski goggles OR 2 swim goggles 3 filter masks 1 rubber hose charcoal (20) Autolearn No Written In A History of Firefighting (3)Survival Under Atomic Attack (3)Guide to Advanced Emergency Care (3)Art and Science of Chemical Warfare (3)Advanced Physical Chemistry (4)chemistry textbook (4) Recipe JSON { \"result\": \"mask_gas_xs\", \"type\": \"recipe\", \"activity_level\": \"LIGHT_EXERCISE\", \"category\": \"CC_*\", \"subcategory\": \"CSC_*_NESTED\", \"skill_used\": \"tailor\", \"difficulty\": 3, \"skills_required\": [ \"fabrication\", 1 ], \"time\": \"1 h\", \"decomp_learn\": 3, \"book_learn\": [ [ \"textbook_fireman\", 3 ], [ \"atomic_survival\", 3 ], [ \"adv_chemistry\", 4 ], [ \"textbook_chemistry\", 4 ], [ \"emergency_book\", 3 ], [ \"textbook_gaswarfare\", 3 ] ], \"qualities\": [ { \"id\": \"WRENCH\", \"level\": 1 } ], \"components\": [ [ [ \"
src/all.2.test.ts > render item pat_earpiece: src/data.ts#L358
Error: unknown object "h" of type "body_part" ❯ CddaData.byId src/data.ts:358:13 ❯ instance$ src/types/item/ArmorInfo.svelte:69:21 ❯ init node_modules/svelte/internal/index.mjs:2122:11 ❯ new ArmorInfo$ src/types/item/ArmorInfo.svelte:2457:33 ❯ createProxiedComponent node_modules/svelte-hmr/runtime/svelte-hooks.js:341:9 ❯ new ProxyComponent node_modules/svelte-hmr/runtime/proxy.js:242:29 ❯ new Proxy<ArmorInfo> node_modules/svelte-hmr/runtime/proxy.js:349:11 ❯ Array.create_else_block$ src/types/Item.svelte:3639:15 ❯ create_if_block$_24 src/types/Item.svelte:3593:99 ❯ create_fragment src/types/Item.svelte:5998:34
src/all.1.test.ts > render overmap_special Ruined Tower Highlands: src/data.ts#L87
TypeError: Cannot use 'in' operator to search for 'str_sp' in undefined ❯ getMsgId src/data.ts:87:38 ❯ translate src/data.ts:106:14 ❯ singular src/data.ts:114:3 ❯ omtAppearance src/types/item/OvermapAppearance.svelte:89:23 ❯ Array.makeAppearanceGrid src/types/item/OvermapAppearance.svelte:43:28 ❯ create_fragment src/types/item/OvermapAppearance.svelte:96:28 ❯ init node_modules/svelte/internal/index.mjs:2137:37 ❯ new OvermapAppearance$ src/types/item/OvermapAppearance.svelte:368:33 ❯ createProxiedComponent node_modules/svelte-hmr/runtime/svelte-hooks.js:341:9 ❯ new ProxyComponent node_modules/svelte-hmr/runtime/proxy.js:242:29
src/all.1.test.ts > render item mask_gas_xl: src/testRender.ts#L93
AssertionError: expected '[ gas mask General Materialmalleable …' not to match /undefined|NaN|object Object/ - Expected: /undefined|NaN|object Object/ + Received: "[ gas mask General Materialmalleable rubber (60%)Plastic (40%) Volume1.92 LWeight0.61 kgLength27 cmCompatible Magazinesgas mask cartridge FlagsVARSIZE OVERSIZE (This clothing is large enough to accommodate abnormally large mutated anatomy.) PREFIX_XL SLEEP_IGNORE UsagePressurise and suction test A full-face, industrial-grade respirator made from a solid black silicon and butyl rubber blend, providing decent user comfort in addition to a clear field of view and a secure fit thanks to the mask's single-element visor and 6-point head harness. Provided that a filter canister's been screwed into the right-side filter port and the respirator's been prepared, it'll do an admirable job at preventing smoke, gas, and contaminants derived from chemical and lab work from taking up residence in your organs. Armor LayerNormal Warmth40 head (crown, nape, forehead) Encumbrance (fits) 10 (poor fit) 20 Coverage26% ProtectionAcid1.23Heat0.34Environ.3 Cotton Blendmalleable rubber Thickness 0.2mm2.0mm Coverage 42%57% Bash 0.2010.00 Cut 0.202.00 Ballistic 0.202.00 eyes Encumbrance (fits) 5 (poor fit) 10 CoverageDefault100% ProtectionAcid2.70Heat0.30Environ.3 Transparent Impact Resistant Plastic Thickness 2.0mm Coverage 100% Bash 8.00 Cut 6.00 Ballistic 3.00 mouth (lips, nose, chin, cheeks) Encumbrance (fits) 30–50 (poor fit) 40–60 Coverage100% ProtectionAcid2.26Heat0.68Environ.3 malleable rubberPlastic Thickness 2.0mm1.0mm Coverage 100%28% Bash 10.002.00 Cut 2.002.00 Ballistic 2.001.00 Muzzles (lips, nose, chin, cheeks) Encumbrance (fits) 30–50 (poor fit) 40–60 Coverage0% ProtectionAcid0.00Heat0.00Environ.3 malleable rubberPlastic Thickness NaNmmNaNmm Coverage 0%0% Bash NaNNaN Cut NaNNaN Ballistic NaNNaN Pockets DescriptionA number of external brackets arranged around the eyepiece to retain an outer attachment.Volume Capacity50 mlWeight Capacity60 gRigidNoMax Item Length17 cmMoves to Remove Item250Flag RestrictionPANORAMIC_OUTSERT DescriptionA space behind the visor designed to accommodate the installation of inserts.Volume Capacity50 mlWeight Capacity50 gRigidYesMax Item Length10 cmMoves to Remove Item380Flag RestrictionPANORAMIC_INSERT Component Of [ heavy survivor mask[ heavy survivor mask[ heavy survivor mask[ survivor firemask[ survivor firemask[ survivor firemask[ survivor half mask[ survivor half mask[ survivor half mask[ survivor mask[ survivor mask[ survivor mask Tool For Crafting ~ acetic acid3 brass knuckles (pair)3 brass knuckles (pair)3 brass knuckles (pair)= formic acid= hydrochloric acid~ methanol= sulfuric acid~ weak glue Obtaining Craft Primary Skilltailoring (4) Other Skillsfabrication (1) Proficiencies Fabric Waterproofing (2× time, 0.25 skill bonus) Plastic Working (1.5× time, 0.5 skill bonus) Time to Complete1 h 10 mActivity LevelLight Batch Time Savingsnone Tools Required 1 tool with cutting of 2 or more. 1 tool with bolt turning of 1 or more. makeshift vacuum mold (16 charges) OR vacuum molder (8 charges) induction hotplate (500 charges) OR microwave (500 charges) OR hotplate (700 charges) OR basecamp fireplace (700 charges) OR basecamp stove (700 charges) OR basecamp stove (700 charges) OR chemistry set (700 charges) OR multi-cooker (700 charges) OR charcoal smoker (80 charges) OR basecamp charcoal smoker (80 charges) OR coal/charcoal cooker (80 charges) OR disconnected oven (2500 charges) OR hexamine stove (40 charges) OR kerosene cooker (40 charges) OR survivor mess kit (40 charges) OR gasoline cooker (40 charges) OR biogas cooker (200 charges) OR propane cooker (40 charges) OR acetylene cooker (20 charges) OR soda can stove kit (60 charges) OR nearby fire OR torch Components polycarbonate sheet (4) 1 ski goggles OR 2 swim goggles 3 filter masks 1 rubber hose charcoal (20) Autolearn No Written In A History of Firefighting (3)Survival Under Atomic Attack