{"id":34992333,"url":"https://github.com/kaiser-chris/pdx-test-runner","last_synced_at":"2026-05-21T00:34:09.707Z","repository":{"id":319014956,"uuid":"1075701012","full_name":"kaiser-chris/pdx-test-runner","owner":"kaiser-chris","description":"Tool to run scripted tests for games like Victoria 3 in a repeatable and configurable way","archived":false,"fork":false,"pushed_at":"2025-10-16T05:57:47.000Z","size":3524,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-17T05:12:31.116Z","etag":null,"topics":["crusader-kings-3","golang","paradox-mods","testing","tool","victoria-3"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kaiser-chris.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-13T21:41:02.000Z","updated_at":"2025-10-16T06:00:41.000Z","dependencies_parsed_at":"2025-10-17T19:08:37.130Z","dependency_job_id":"ad5636fa-98e3-45f8-9328-1f8dda26f140","html_url":"https://github.com/kaiser-chris/pdx-test-runner","commit_stats":null,"previous_names":["kaiser-chris/pdx-test-runner"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/kaiser-chris/pdx-test-runner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaiser-chris%2Fpdx-test-runner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaiser-chris%2Fpdx-test-runner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaiser-chris%2Fpdx-test-runner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaiser-chris%2Fpdx-test-runner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kaiser-chris","download_url":"https://codeload.github.com/kaiser-chris/pdx-test-runner/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaiser-chris%2Fpdx-test-runner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33282247,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-20T15:12:43.734Z","status":"ssl_error","status_checked_at":"2026-05-20T15:12:42.300Z","response_time":356,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crusader-kings-3","golang","paradox-mods","testing","tool","victoria-3"],"created_at":"2025-12-27T01:58:28.848Z","updated_at":"2026-05-21T00:34:09.701Z","avatar_url":"https://github.com/kaiser-chris.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Overview\n\n**pdx-test-runner** is a tool to run scripted tests for games like Victoria 3 in a repeatable and configurable way.\n\n![Title Icon](github_icon_readme.jpg)\n\n## Contents\n\n* [How does it work?](#how-does-it-work)\n* [Configuration](#configuration)\n    * [Attributes](#attributes)\n    * [Example](#example-json-config)\n* [Features](#features)\n    * [Ignoring Files](#ignoring-files)\n    * [Reporting](#reporting)\n    * [Special Comments](#special-comments)\n* [Usage](#usage)\n    * [Usage Tip](#usage-tip)\n* [How To Build](#how-to-build)\n\n## Status\n\n[![Build Binaries](https://github.com/kaiser-chris/pdx-test-runner/actions/workflows/build.yaml/badge.svg)](https://github.com/kaiser-chris/pdx-test-runner/actions/workflows/build.yaml)\n[![GitHub Release](https://img.shields.io/github/v/release/kaiser-chris/pdx-test-runner?display_name=release\u0026label=Current%20Version\u0026color=blue)](https://github.com/kaiser-chris/pdx-test-runner/releases)\n\n## How does it work?\n\nThe tool will run the game in a headless mode in the background without user intervention.\n\nPDX games already have this functionality so why is this tool needed?\n\nIn short, it offers the following improvements to the base functionality:\n\n- Full automation (by default the game will not close when all tests are completed)\n- Allow ignoring existing tests from the base game (or other mods) to potentially improve runtime\n- Collection of test result file and test failure save games in a central place\n- Generation of a human-readable test report\n\n## Configuration\n\nThe test runner is configured using a json file.\n\n### Attributes\n\n- **REQUIRED** `game-directory` path to the game directory\n- **REQUIRED** `mod-directories`a list of mods that have tests and are currently loaded (needed for ignore feature and reporting)\n- **OPTIONAL** `output-directory` directory where tests results and test failure save games are stored after the test\n  run (default: `./output/`)\n- **OPTIONAL** `move-save-games` whether to move (instead of copy) failure save games to the output folder (default:\n  false)\n- **OPTIONAL** `ignored-files` list of ignored scripted test files. for more information see (default: empty)\n\n### Example JSON config\n\n```json\n{\n  \"game-directory\": \"X:\\\\Path\\\\To\\\\Game\\\\Base\\\\Folder\",\n  \"mod-directories\": [\n    \"X:\\\\Path\\\\To\\\\First\\\\Mod\\\\In\\\\Load\\\\Order\",\n    \"X:\\\\Path\\\\To\\\\Second\\\\Mod\\\\In\\\\Load\\\\Order\"\n  ],\n  \"output-directory\": \"output\",\n  \"move-save-games\": true,\n  \"ignored-files\": [\n    \"some_test_file.txt\",\n    \"another_test_file.txt\"\n  ]\n}\n```\n\n## Features\n\n### Ignoring Files\n\nNormally the game runs all scripted tests in the base game as well as all loaded mods.\n\nIn most cases we do not want to run every base game test or tests from other mods.\nThe test runner allows you to configure ignored files so not all tests are run everytime.\n\nWhen the test runner starts it will parse all tests for reporting purposes\nand if one of the test files matches an entry in the ignored file list it will rename the file.\nSo when the game runs its tests it will ignore the scripted test file\nand after finishing the test run the test runner will restore it to the original name,\nso it can be run again in the future.\n\n### Reporting\n\nAfter running the test runner will report test results in the console,\nbut will also write out a markdown report in the output directory.\n\nAn example report can be found here: [example_report.md](example_report.md)\n\n### Special Comments\n\nTests and test files can be annotated with names and descriptions which will be reflected in the final test report.\n\nThis feature is totally optional and purely cosmetic.\n\nHere is an example of an annotated scripted test:\n\n```\n### name = Name of the whole test file\nlast_date = \"1936.1.1\"\n\ntests = {\n    ### name = Name of specific test\n    ### desc = Description of specific test\n    some_test = {\n        acceptable_fail_rate = 0.0\n        success = {\n            always = yes\n        }\n\t\tfail = {\n            always = no\n        }\n    }\n}\n```\n\n## Usage\n\nFirst download the latest release from the Releases page of the repository:\n\n- https://github.com/kaiser-chris/pdx-test-runner/releases\n\n\u003e The ZIP may be marked as a *Virus*.\n\u003e This is a **false positive**!\n\u003e\n\u003e If you do not trust this, then you can [build](#how-to-build) it yourself.\n\nThen you can run the application like this:\n\n```\n.\\pdx-test-runner.exe\"\n```\n\n\u003e **NOTE** You need to run the game at least once before by directly starting the binary (exe) in the game folder.\n\u003e If this is not done, no DLCs are loaded!\n\nAll optional commands can be found in the help dialog. Help dialog (`.\\pdx-test-runner.exe -h`):\n\n```\nUsage of pdx-test-runner:\n  -config string\n    \tOptional: Path to test config (default \"test-config.json\")\n  -report-ignored\n    \tOptional: Enable to list ignored tests in console\n```\n\n### Usage Tip\n\nIf you do not know how to open the command line on Windows:\n\n- Open the folder containing the `pdx-test-runner.exe`\n- Click into the top address bar of the explorer\n- Clear it\n- Write `cmd` and press enter\n- Now you should have a command line window open\n\n![explorer_example.png](explorer_example.png)\n\n## How To Build\n\nFirst download and install the Go SDK:\n\n- https://go.dev/doc/install\n\nNext, open the project folder in a terminal (e.g. cmd) and run the following command:\n\n```\ngo build\n```\n\nThat is it. There should be an executable in the project folder now.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaiser-chris%2Fpdx-test-runner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaiser-chris%2Fpdx-test-runner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaiser-chris%2Fpdx-test-runner/lists"}