Skip to content

Add development info to readme #31

Add development info to readme

Add development info to readme #31

GitHub Actions / Test Report succeeded Jan 4, 2024 in 0s

Test Report ✅

Tests passed successfully

✅ report.xml

369 tests were completed in 4s with 328 passed, 0 failed and 41 skipped.

Test suite Passed Failed Skipped Time
tests/configuration.test.ts 321✅ 41⚪ 1s
tests/server.test.ts 7✅ 2s

✅ tests/configuration.test.ts

__tests__/configuration.test.ts
  ✅ configuration > has valid hotend configuration files
  ✅ configuration > has valid extruder configuration files
  ✅ configuration > has valid z-probe configuration files
  ✅ configuration > has valid board configuration files
  ✅ configuration > has non zero bash scripts
  ✅ configuration > has executable bash scripts > change-hostname-as-root.sh is executable
  ✅ configuration > has executable bash scripts > change-hostname.sh is executable
  ✅ configuration > has executable bash scripts > ensure-executable-scripts.sh is executable
  ✅ configuration > has executable bash scripts > flash-path.sh is executable
  ✅ configuration > has executable bash scripts > generate-belt-tension-graph.sh is executable
  ✅ configuration > has executable bash scripts > generate-shaper-graph-x.sh is executable
  ✅ configuration > has executable bash scripts > generate-shaper-graph-y.sh is executable
  ✅ configuration > has executable bash scripts > install-prusa-mini-config.sh is executable
  ✅ configuration > has executable bash scripts > install-prusa-mk3s-config.sh is executable
  ✅ configuration > has executable bash scripts > install-v-core-3-config.sh is executable
  ✅ configuration > has executable bash scripts > install-v-core-pro-config.sh is executable
  ✅ configuration > has executable bash scripts > install-v-minion-config.sh is executable
  ✅ configuration > has executable bash scripts > install-voron-v01-config.sh is executable
  ✅ configuration > has executable bash scripts > install-voron-v24-config.sh is executable
  ✅ configuration > has executable bash scripts > klipper-mcu-added.sh is executable
  ✅ configuration > has executable bash scripts > klipper-mcu-update.sh is executable
  ✅ configuration > has executable bash scripts > klipper-post-merge.sh is executable
  ✅ configuration > has executable bash scripts > moonraker-ensure-policykit-rules.sh is executable
  ✅ configuration > has executable bash scripts > moonraker-post-merge.sh is executable
  ✅ configuration > has executable bash scripts > moonraker-update.sh is executable
  ✅ configuration > has executable bash scripts > ratos-common.sh is executable
  ✅ configuration > has executable bash scripts > ratos-install.sh is executable
  ✅ configuration > has executable bash scripts > ratos-post-install.sh is executable
  ✅ configuration > has executable bash scripts > ratos-post-merge.sh is executable
  ✅ configuration > has executable bash scripts > ratos-update.sh is executable
  ✅ configuration > has valid board definitions > 'Pi' > has executable scripts
  ⚪ configuration > has valid board definitions > 'Pi' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'Pi' > has config file
  ⚪ configuration > has valid board definitions > 'Pi' > can parse board config file
  ⚪ configuration > has valid board definitions > 'Pi' > has extruderless config file
  ⚪ configuration > has valid board definitions > 'Pi' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'Einsy' > has executable scripts
  ✅ configuration > has valid board definitions > 'Einsy' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'Einsy' > has config file
  ✅ configuration > has valid board definitions > 'Einsy' > can parse board config file
  ⚪ configuration > has valid board definitions > 'Einsy' > has extruderless config file
  ✅ configuration > has valid board definitions > 'Einsy' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'Buddy' > has executable scripts
  ✅ configuration > has valid board definitions > 'Buddy' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'Buddy' > has config file
  ✅ configuration > has valid board definitions > 'Buddy' > can parse board config file
  ⚪ configuration > has valid board definitions > 'Buddy' > has extruderless config file
  ✅ configuration > has valid board definitions > 'Buddy' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'FLY-SHT42' > has executable scripts
  ✅ configuration > has valid board definitions > 'FLY-SHT42' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'FLY-SHT42' > has config file
  ✅ configuration > has valid board definitions > 'FLY-SHT42' > can parse board config file
  ⚪ configuration > has valid board definitions > 'FLY-SHT42' > has extruderless config file
  ✅ configuration > has valid board definitions > 'FLY-SHT42' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'FLY-SHT36' > has executable scripts
  ✅ configuration > has valid board definitions > 'FLY-SHT36' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'FLY-SHT36' > has config file
  ✅ configuration > has valid board definitions > 'FLY-SHT36' > can parse board config file
  ⚪ configuration > has valid board definitions > 'FLY-SHT36' > has extruderless config file
  ✅ configuration > has valid board definitions > 'FLY-SHT36' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'Spider v1.1' > has executable scripts
  ✅ configuration > has valid board definitions > 'Spider v1.1' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'Spider v1.1' > has config file
  ✅ configuration > has valid board definitions > 'Spider v1.1' > can parse board config file
  ⚪ configuration > has valid board definitions > 'Spider v1.1' > has extruderless config file
  ✅ configuration > has valid board definitions > 'Spider v1.1' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'SKRat v1.0' > has executable scripts
  ✅ configuration > has valid board definitions > 'SKRat v1.0' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'SKRat v1.0' > has config file
  ✅ configuration > has valid board definitions > 'SKRat v1.0' > can parse board config file
  ✅ configuration > has valid board definitions > 'SKRat v1.0' > has extruderless config file
  ✅ configuration > has valid board definitions > 'SKRat v1.0' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'SKR Pro v1.2' > has executable scripts
  ✅ configuration > has valid board definitions > 'SKR Pro v1.2' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'SKR Pro v1.2' > has config file
  ✅ configuration > has valid board definitions > 'SKR Pro v1.2' > can parse board config file
  ⚪ configuration > has valid board definitions > 'SKR Pro v1.2' > has extruderless config file
  ✅ configuration > has valid board definitions > 'SKR Pro v1.2' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'SKR Mini E3 V3.0' > has executable scripts
  ✅ configuration > has valid board definitions > 'SKR Mini E3 V3.0' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'SKR Mini E3 V3.0' > has config file
  ✅ configuration > has valid board definitions > 'SKR Mini E3 V3.0' > can parse board config file
  ⚪ configuration > has valid board definitions > 'SKR Mini E3 V3.0' > has extruderless config file
  ✅ configuration > has valid board definitions > 'SKR Mini E3 V3.0' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'SKR 3 H723' > has executable scripts
  ✅ configuration > has valid board definitions > 'SKR 3 H723' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'SKR 3 H723' > has config file
  ✅ configuration > has valid board definitions > 'SKR 3 H723' > can parse board config file
  ⚪ configuration > has valid board definitions > 'SKR 3 H723' > has extruderless config file
  ✅ configuration > has valid board definitions > 'SKR 3 H723' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'SKR 3 EZ H723' > has executable scripts
  ✅ configuration > has valid board definitions > 'SKR 3 EZ H723' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'SKR 3 EZ H723' > has config file
  ✅ configuration > has valid board definitions > 'SKR 3 EZ H723' > can parse board config file
  ✅ configuration > has valid board definitions > 'SKR 3 EZ H723' > has extruderless config file
  ✅ configuration > has valid board definitions > 'SKR 3 EZ H723' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'SKR 3 EZ H743' > has executable scripts
  ✅ configuration > has valid board definitions > 'SKR 3 EZ H743' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'SKR 3 EZ H743' > has config file
  ✅ configuration > has valid board definitions > 'SKR 3 EZ H743' > can parse board config file
  ✅ configuration > has valid board definitions > 'SKR 3 EZ H743' > has extruderless config file
  ✅ configuration > has valid board definitions > 'SKR 3 EZ H743' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'SKR 3' > has executable scripts
  ✅ configuration > has valid board definitions > 'SKR 3' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'SKR 3' > has config file
  ✅ configuration > has valid board definitions > 'SKR 3' > can parse board config file
  ⚪ configuration > has valid board definitions > 'SKR 3' > has extruderless config file
  ✅ configuration > has valid board definitions > 'SKR 3' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'SKR 2 429' > has executable scripts
  ✅ configuration > has valid board definitions > 'SKR 2 429' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'SKR 2 429' > has config file
  ✅ configuration > has valid board definitions > 'SKR 2 429' > can parse board config file
  ⚪ configuration > has valid board definitions > 'SKR 2 429' > has extruderless config file
  ✅ configuration > has valid board definitions > 'SKR 2 429' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'SKR 2 407' > has executable scripts
  ✅ configuration > has valid board definitions > 'SKR 2 407' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'SKR 2 407' > has config file
  ✅ configuration > has valid board definitions > 'SKR 2 407' > can parse board config file
  ⚪ configuration > has valid board definitions > 'SKR 2 407' > has extruderless config file
  ✅ configuration > has valid board definitions > 'SKR 2 407' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'Octopus Pro H723 V1.1' > has executable scripts
  ✅ configuration > has valid board definitions > 'Octopus Pro H723 V1.1' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'Octopus Pro H723 V1.1' > has config file
  ✅ configuration > has valid board definitions > 'Octopus Pro H723 V1.1' > can parse board config file
  ⚪ configuration > has valid board definitions > 'Octopus Pro H723 V1.1' > has extruderless config file
  ✅ configuration > has valid board definitions > 'Octopus Pro H723 V1.1' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'Octopus Pro H723' > has executable scripts
  ✅ configuration > has valid board definitions > 'Octopus Pro H723' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'Octopus Pro H723' > has config file
  ✅ configuration > has valid board definitions > 'Octopus Pro H723' > can parse board config file
  ⚪ configuration > has valid board definitions > 'Octopus Pro H723' > has extruderless config file
  ✅ configuration > has valid board definitions > 'Octopus Pro H723' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'Octopus Pro 446' > has executable scripts
  ✅ configuration > has valid board definitions > 'Octopus Pro 446' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'Octopus Pro 446' > has config file
  ✅ configuration > has valid board definitions > 'Octopus Pro 446' > can parse board config file
  ⚪ configuration > has valid board definitions > 'Octopus Pro 446' > has extruderless config file
  ✅ configuration > has valid board definitions > 'Octopus Pro 446' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'Octopus Pro 429' > has executable scripts
  ✅ configuration > has valid board definitions > 'Octopus Pro 429' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'Octopus Pro 429' > has config file
  ✅ configuration > has valid board definitions > 'Octopus Pro 429' > can parse board config file
  ⚪ configuration > has valid board definitions > 'Octopus Pro 429' > has extruderless config file
  ✅ configuration > has valid board definitions > 'Octopus Pro 429' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'Octopus Max EZ V1.0' > has executable scripts
  ✅ configuration > has valid board definitions > 'Octopus Max EZ V1.0' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'Octopus Max EZ V1.0' > has config file
  ✅ configuration > has valid board definitions > 'Octopus Max EZ V1.0' > can parse board config file
  ⚪ configuration > has valid board definitions > 'Octopus Max EZ V1.0' > has extruderless config file
  ✅ configuration > has valid board definitions > 'Octopus Max EZ V1.0' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'Octopus V1.1 F407' > has executable scripts
  ✅ configuration > has valid board definitions > 'Octopus V1.1 F407' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'Octopus V1.1 F407' > has config file
  ✅ configuration > has valid board definitions > 'Octopus V1.1 F407' > can parse board config file
  ⚪ configuration > has valid board definitions > 'Octopus V1.1 F407' > has extruderless config file
  ✅ configuration > has valid board definitions > 'Octopus V1.1 F407' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'Octopus V1.1' > has executable scripts
  ✅ configuration > has valid board definitions > 'Octopus V1.1' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'Octopus V1.1' > has config file
  ✅ configuration > has valid board definitions > 'Octopus V1.1' > can parse board config file
  ⚪ configuration > has valid board definitions > 'Octopus V1.1' > has extruderless config file
  ✅ configuration > has valid board definitions > 'Octopus V1.1' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'Manta M8P v1.1' > has executable scripts
  ✅ configuration > has valid board definitions > 'Manta M8P v1.1' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'Manta M8P v1.1' > has config file
  ✅ configuration > has valid board definitions > 'Manta M8P v1.1' > can parse board config file
  ⚪ configuration > has valid board definitions > 'Manta M8P v1.1' > has extruderless config file
  ✅ configuration > has valid board definitions > 'Manta M8P v1.1' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'Manta M8P' > has executable scripts
  ✅ configuration > has valid board definitions > 'Manta M8P' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'Manta M8P' > has config file
  ✅ configuration > has valid board definitions > 'Manta M8P' > can parse board config file
  ⚪ configuration > has valid board definitions > 'Manta M8P' > has extruderless config file
  ✅ configuration > has valid board definitions > 'Manta M8P' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'Manta M4P v2.2' > has executable scripts
  ✅ configuration > has valid board definitions > 'Manta M4P v2.2' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'Manta M4P v2.2' > has config file
  ✅ configuration > has valid board definitions > 'Manta M4P v2.2' > can parse board config file
  ⚪ configuration > has valid board definitions > 'Manta M4P v2.2' > has extruderless config file
  ✅ configuration > has valid board definitions > 'Manta M4P v2.2' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'Manta M4P' > has executable scripts
  ✅ configuration > has valid board definitions > 'Manta M4P' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'Manta M4P' > has config file
  ✅ configuration > has valid board definitions > 'Manta M4P' > can parse board config file
  ⚪ configuration > has valid board definitions > 'Manta M4P' > has extruderless config file
  ✅ configuration > has valid board definitions > 'Manta M4P' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'Manta E3EZ' > has executable scripts
  ✅ configuration > has valid board definitions > 'Manta E3EZ' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'Manta E3EZ' > has config file
  ✅ configuration > has valid board definitions > 'Manta E3EZ' > can parse board config file
  ⚪ configuration > has valid board definitions > 'Manta E3EZ' > has extruderless config file
  ✅ configuration > has valid board definitions > 'Manta E3EZ' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'EBB42 v1.2' > has executable scripts
  ✅ configuration > has valid board definitions > 'EBB42 v1.2' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'EBB42 v1.2' > has config file
  ✅ configuration > has valid board definitions > 'EBB42 v1.2' > can parse board config file
  ⚪ configuration > has valid board definitions > 'EBB42 v1.2' > has extruderless config file
  ✅ configuration > has valid board definitions > 'EBB42 v1.2' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'EBB42 v1.1' > has executable scripts
  ✅ configuration > has valid board definitions > 'EBB42 v1.1' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'EBB42 v1.1' > has config file
  ✅ configuration > has valid board definitions > 'EBB42 v1.1' > can parse board config file
  ⚪ configuration > has valid board definitions > 'EBB42 v1.1' > has extruderless config file
  ✅ configuration > has valid board definitions > 'EBB42 v1.1' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'EBB42 v1.0' > has executable scripts
  ✅ configuration > has valid board definitions > 'EBB42 v1.0' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'EBB42 v1.0' > has config file
  ✅ configuration > has valid board definitions > 'EBB42 v1.0' > can parse board config file
  ⚪ configuration > has valid board definitions > 'EBB42 v1.0' > has extruderless config file
  ✅ configuration > has valid board definitions > 'EBB42 v1.0' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'EBB36 v1.2' > has executable scripts
  ✅ configuration > has valid board definitions > 'EBB36 v1.2' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'EBB36 v1.2' > has config file
  ✅ configuration > has valid board definitions > 'EBB36 v1.2' > can parse board config file
  ⚪ configuration > has valid board definitions > 'EBB36 v1.2' > has extruderless config file
  ✅ configuration > has valid board definitions > 'EBB36 v1.2' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'EBB36 v1.1' > has executable scripts
  ✅ configuration > has valid board definitions > 'EBB36 v1.1' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'EBB36 v1.1' > has config file
  ✅ configuration > has valid board definitions > 'EBB36 v1.1' > can parse board config file
  ⚪ configuration > has valid board definitions > 'EBB36 v1.1' > has extruderless config file
  ✅ configuration > has valid board definitions > 'EBB36 v1.1' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid board definitions > 'EBB36 v1.0' > has executable scripts
  ✅ configuration > has valid board definitions > 'EBB36 v1.0' > has a valid single unique udev rule
  ✅ configuration > has valid board definitions > 'EBB36 v1.0' > has config file
  ✅ configuration > has valid board definitions > 'EBB36 v1.0' > can parse board config file
  ⚪ configuration > has valid board definitions > 'EBB36 v1.0' > has extruderless config file
  ✅ configuration > has valid board definitions > 'EBB36 v1.0' > has firmware config file with correct USB Serial number
  ✅ configuration > has valid printer configuration files
  ✅ configuration > has valid 'Voron Design' 'V2.4' definition > has serializable partial config
  ✅ configuration > has valid 'Voron Design' 'V2.4' definition > has deserializeable toolheads
  ✅ configuration > has valid 'Voron Design' 'V2.4' definition > has serializable config
  ⚪ configuration > has valid 'Voron Design' 'V2.4' definition > has valid toolhead 'x' > has valid toolboard default
  ✅ configuration > has valid 'Voron Design' 'V2.4' definition > has valid toolhead 'x' > has valid probe default
  ✅ configuration > has valid 'Voron Design' 'V2.4' definition > has valid toolhead 'x' > has valid hotend default
  ✅ configuration > has valid 'Voron Design' 'V2.4' definition > has valid toolhead 'x' > has valid extruder default
  ✅ configuration > has valid 'Voron Design' 'V2.4' definition > has valid toolhead 'x' > has valid x endstop default
  ✅ configuration > has valid 'Voron Design' 'V2.4' definition > has valid toolhead 'x' > has valid x endstop default
  ✅ configuration > has valid 'Voron Design' 'V2.4' definition > has valid toolhead 'x' > can be deserialized
  ✅ configuration > has valid 'Voron Design' 'V2.4' definition > has a valid image
  ✅ configuration > has valid 'Voron Design' 'V2.4' definition > has an existing template file
  ✅ configuration > has valid 'Voron Design' 'V2.4' definition > has valid board default
  ✅ configuration > has valid 'Voron Design' 'V2.4' definition > has valid rail defaults
  ✅ configuration > has valid 'Voron Design' 'V0.1' definition > has serializable partial config
  ✅ configuration > has valid 'Voron Design' 'V0.1' definition > has deserializeable toolheads
  ✅ configuration > has valid 'Voron Design' 'V0.1' definition > has serializable config
  ⚪ configuration > has valid 'Voron Design' 'V0.1' definition > has valid toolhead 'x' > has valid toolboard default
  ⚪ configuration > has valid 'Voron Design' 'V0.1' definition > has valid toolhead 'x' > has valid probe default
  ✅ configuration > has valid 'Voron Design' 'V0.1' definition > has valid toolhead 'x' > has valid hotend default
  ✅ configuration > has valid 'Voron Design' 'V0.1' definition > has valid toolhead 'x' > has valid extruder default
  ✅ configuration > has valid 'Voron Design' 'V0.1' definition > has valid toolhead 'x' > has valid x endstop default
  ✅ configuration > has valid 'Voron Design' 'V0.1' definition > has valid toolhead 'x' > has valid x endstop default
  ✅ configuration > has valid 'Voron Design' 'V0.1' definition > has valid toolhead 'x' > can be deserialized
  ✅ configuration > has valid 'Voron Design' 'V0.1' definition > has a valid image
  ✅ configuration > has valid 'Voron Design' 'V0.1' definition > has an existing template file
  ✅ configuration > has valid 'Voron Design' 'V0.1' definition > has valid board default
  ✅ configuration > has valid 'Voron Design' 'V0.1' definition > has valid rail defaults
  ✅ configuration > has valid 'Rat Rig' 'V-Minion' definition > has serializable partial config
  ✅ configuration > has valid 'Rat Rig' 'V-Minion' definition > has deserializeable toolheads
  ✅ configuration > has valid 'Rat Rig' 'V-Minion' definition > has serializable config
  ⚪ configuration > has valid 'Rat Rig' 'V-Minion' definition > has valid toolhead 'x' > has valid toolboard default
  ✅ configuration > has valid 'Rat Rig' 'V-Minion' definition > has valid toolhead 'x' > has valid probe default
  ✅ configuration > has valid 'Rat Rig' 'V-Minion' definition > has valid toolhead 'x' > has valid hotend default
  ✅ configuration > has valid 'Rat Rig' 'V-Minion' definition > has valid toolhead 'x' > has valid extruder default
  ✅ configuration > has valid 'Rat Rig' 'V-Minion' definition > has valid toolhead 'x' > has valid x endstop default
  ✅ configuration > has valid 'Rat Rig' 'V-Minion' definition > has valid toolhead 'x' > has valid x endstop default
  ✅ configuration > has valid 'Rat Rig' 'V-Minion' definition > has valid toolhead 'x' > can be deserialized
  ✅ configuration > has valid 'Rat Rig' 'V-Minion' definition > has a valid image
  ✅ configuration > has valid 'Rat Rig' 'V-Minion' definition > has an existing template file
  ✅ configuration > has valid 'Rat Rig' 'V-Minion' definition > has valid board default
  ✅ configuration > has valid 'Rat Rig' 'V-Minion' definition > has valid rail defaults
  ✅ configuration > has valid 'Rat Rig' 'V-Core Pro v1.3' definition > has serializable partial config
  ✅ configuration > has valid 'Rat Rig' 'V-Core Pro v1.3' definition > has deserializeable toolheads
  ✅ configuration > has valid 'Rat Rig' 'V-Core Pro v1.3' definition > has serializable config
  ⚪ configuration > has valid 'Rat Rig' 'V-Core Pro v1.3' definition > has valid toolhead 'x' > has valid toolboard default
  ✅ configuration > has valid 'Rat Rig' 'V-Core Pro v1.3' definition > has valid toolhead 'x' > has valid probe default
  ✅ configuration > has valid 'Rat Rig' 'V-Core Pro v1.3' definition > has valid toolhead 'x' > has valid hotend default
  ✅ configuration > has valid 'Rat Rig' 'V-Core Pro v1.3' definition > has valid toolhead 'x' > has valid extruder default
  ✅ configuration > has valid 'Rat Rig' 'V-Core Pro v1.3' definition > has valid toolhead 'x' > has valid x endstop default
  ✅ configuration > has valid 'Rat Rig' 'V-Core Pro v1.3' definition > has valid toolhead 'x' > has valid x endstop default
  ✅ configuration > has valid 'Rat Rig' 'V-Core Pro v1.3' definition > has valid toolhead 'x' > can be deserialized
  ✅ configuration > has valid 'Rat Rig' 'V-Core Pro v1.3' definition > has a valid image
  ✅ configuration > has valid 'Rat Rig' 'V-Core Pro v1.3' definition > has an existing template file
  ✅ configuration > has valid 'Rat Rig' 'V-Core Pro v1.3' definition > has valid board default
  ✅ configuration > has valid 'Rat Rig' 'V-Core Pro v1.3' definition > has valid rail defaults
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 IDEX' definition > has serializable partial config
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 IDEX' definition > has deserializeable toolheads
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 IDEX' definition > has serializable config
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 IDEX' definition > has valid toolhead 'x' > has valid toolboard default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 IDEX' definition > has valid toolhead 'x' > has valid probe default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 IDEX' definition > has valid toolhead 'x' > has valid hotend default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 IDEX' definition > has valid toolhead 'x' > has valid extruder default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 IDEX' definition > has valid toolhead 'x' > has valid x endstop default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 IDEX' definition > has valid toolhead 'x' > has valid x endstop default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 IDEX' definition > has valid toolhead 'x' > can be deserialized
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 IDEX' definition > has valid toolhead 'dual_carriage' > has valid toolboard default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 IDEX' definition > has valid toolhead 'dual_carriage' > has valid probe default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 IDEX' definition > has valid toolhead 'dual_carriage' > has valid hotend default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 IDEX' definition > has valid toolhead 'dual_carriage' > has valid extruder default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 IDEX' definition > has valid toolhead 'dual_carriage' > has valid x endstop default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 IDEX' definition > has valid toolhead 'dual_carriage' > has valid x endstop default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 IDEX' definition > has valid toolhead 'dual_carriage' > can be deserialized
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 IDEX' definition > has a valid image
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 IDEX' definition > has an existing template file
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 IDEX' definition > has valid board default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 IDEX' definition > has valid rail defaults
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 Hybrid' definition > has serializable partial config
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 Hybrid' definition > has deserializeable toolheads
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 Hybrid' definition > has serializable config
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 Hybrid' definition > has valid toolhead 'x' > has valid toolboard default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 Hybrid' definition > has valid toolhead 'x' > has valid probe default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 Hybrid' definition > has valid toolhead 'x' > has valid hotend default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 Hybrid' definition > has valid toolhead 'x' > has valid extruder default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 Hybrid' definition > has valid toolhead 'x' > has valid x endstop default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 Hybrid' definition > has valid toolhead 'x' > has valid x endstop default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 Hybrid' definition > has valid toolhead 'x' > can be deserialized
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 Hybrid' definition > has a valid image
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 Hybrid' definition > has an existing template file
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 Hybrid' definition > has valid board default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3 Hybrid' definition > has valid rail defaults
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3' definition > has serializable partial config
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3' definition > has deserializeable toolheads
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3' definition > has serializable config
  ⚪ configuration > has valid 'Rat Rig' 'V-Core 3' definition > has valid toolhead 'x' > has valid toolboard default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3' definition > has valid toolhead 'x' > has valid probe default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3' definition > has valid toolhead 'x' > has valid hotend default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3' definition > has valid toolhead 'x' > has valid extruder default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3' definition > has valid toolhead 'x' > has valid x endstop default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3' definition > has valid toolhead 'x' > has valid x endstop default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3' definition > has valid toolhead 'x' > can be deserialized
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3' definition > has a valid image
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3' definition > has an existing template file
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3' definition > has valid board default
  ✅ configuration > has valid 'Rat Rig' 'V-Core 3' definition > has valid rail defaults
  ✅ configuration > has valid 'Prusa' 'MK3S' definition > has serializable partial config
  ✅ configuration > has valid 'Prusa' 'MK3S' definition > has deserializeable toolheads
  ✅ configuration > has valid 'Prusa' 'MK3S' definition > has serializable config
  ⚪ configuration > has valid 'Prusa' 'MK3S' definition > has valid toolhead 'x' > has valid toolboard default
  ✅ configuration > has valid 'Prusa' 'MK3S' definition > has valid toolhead 'x' > has valid probe default
  ✅ configuration > has valid 'Prusa' 'MK3S' definition > has valid toolhead 'x' > has valid hotend default
  ✅ configuration > has valid 'Prusa' 'MK3S' definition > has valid toolhead 'x' > has valid extruder default
  ✅ configuration > has valid 'Prusa' 'MK3S' definition > has valid toolhead 'x' > has valid x endstop default
  ✅ configuration > has valid 'Prusa' 'MK3S' definition > has valid toolhead 'x' > has valid x endstop default
  ✅ configuration > has valid 'Prusa' 'MK3S' definition > has valid toolhead 'x' > can be deserialized
  ✅ configuration > has valid 'Prusa' 'MK3S' definition > has a valid image
  ✅ configuration > has valid 'Prusa' 'MK3S' definition > has an existing template file
  ✅ configuration > has valid 'Prusa' 'MK3S' definition > has valid board default
  ✅ configuration > has valid 'Prusa' 'MK3S' definition > has valid rail defaults
  ✅ configuration > has valid 'Prusa' 'Mini' definition > has serializable partial config
  ✅ configuration > has valid 'Prusa' 'Mini' definition > has deserializeable toolheads
  ✅ configuration > has valid 'Prusa' 'Mini' definition > has serializable config
  ⚪ configuration > has valid 'Prusa' 'Mini' definition > has valid toolhead 'x' > has valid toolboard default
  ✅ configuration > has valid 'Prusa' 'Mini' definition > has valid toolhead 'x' > has valid probe default
  ✅ configuration > has valid 'Prusa' 'Mini' definition > has valid toolhead 'x' > has valid hotend default
  ✅ configuration > has valid 'Prusa' 'Mini' definition > has valid toolhead 'x' > has valid extruder default
  ✅ configuration > has valid 'Prusa' 'Mini' definition > has valid toolhead 'x' > has valid x endstop default
  ✅ configuration > has valid 'Prusa' 'Mini' definition > has valid toolhead 'x' > has valid x endstop default
  ✅ configuration > has valid 'Prusa' 'Mini' definition > has valid toolhead 'x' > can be deserialized
  ✅ configuration > has valid 'Prusa' 'Mini' definition > has a valid image
  ✅ configuration > has valid 'Prusa' 'Mini' definition > has an existing template file
  ✅ configuration > has valid 'Prusa' 'Mini' definition > has valid board default
  ✅ configuration > has valid 'Prusa' 'Mini' definition > has valid rail defaults

✅ tests/server.test.ts

__tests__/server.test.ts
  ✅ server > metadata > can strip comments
  ✅ server > metadata > can strip includes
  ✅ server > metadata > can replace a pin
  ✅ server > serialization > can deserialize toolheads from printer configuration files
  ✅ server > serialization > can deserialize toolheads from a partial printer config
  ✅ server > serialization > can generate idex config
  ✅ server > mcu > can compile firmware for controlboard and toolheads