webproject-xyz/codeception-module-ai-reporter
A Codeception module that adds AI-powered reporting to your test suite, turning raw results and failures into clear, readable summaries. Drop it into your Codeception config to get smarter insights from every test run without changing how you write tests.
composer require --dev webproject-xyz/codeception-module-ai-reporter (check the package name in composer.json), then enable the module in your Codeception suite config (typically tests/Unit.suite.yml, tests/Feature.suite.yml, or a shared codeception.dist.yml)._env placeholders in the suite YAML.vendor/bin/codecept run Feature SomeTest::testSomething, and confirm the module emits an AI-generated explanation/report artefact alongside Codeception's normal output.README config block (required vs optional keys), then src/ — as of 2.1.0 the failure-analysis logic lives in a dedicated FailureExtractor module, so that class is the best entry point for understanding what data is actually sent to the model._before, _after, _failed) and expects to be driven by the runner.app/ or tests/ file yourself. Treat any suggested patch as a hint.FailureExtractor into its own deep module means you can now reason about — and potentially reuse — the "turn a Codeception failure into structured context" step independently of the AI-calling step. If you have custom reporting needs, that boundary is the natural extension point (e.g. feeding extracted failures into your own Slack/Issue tracker pipeline instead of the bundled AI call)._failed event fires before Laravel teardown logs are flushed in some setups, so correlate the AI report with storage/logs/laravel.log and the Codeception _output/ directory.modules: enabled: - ... with config:). Don't go looking in config/.*.suite.yml it gets committed. Use %ENV_VAR% substitution or .env loading in codeception.dist.yml.FailureExtractor extraction is an internal refactor, so public configuration keys and behaviour should be unchanged. Still, if you had extended or monkey-patched the module's failure-handling internals (subclassing, overriding _failed), re-check against 2.1.0 — internal method/property locations likely moved.How can I help you explore Laravel packages today?