From bb3c400459055de118f3690b85df569473b213cc Mon Sep 17 00:00:00 2001 From: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com> Date: Sat, 24 Oct 2026 00:44:35 +0200 Subject: [PATCH] test(previews): cover portless compose links in pull request comments Regression test for #11065. Since v4.3.15 (#11594) preview domains are stored without the internal port, and every deployment regenerates them before the ready comment is posted. --- .../PreviewDomainPortOverridesTest.php | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/Feature/PreviewDomainPortOverridesTest.php b/tests/Feature/PreviewDomainPortOverridesTest.php index 535cacf338..20050dc485 100644 --- a/tests/Feature/PreviewDomainPortOverridesTest.php +++ b/tests/Feature/PreviewDomainPortOverridesTest.php @@ -1,5 +1,7 @@ application->update([ + 'build_pack' => 'dockercompose', + 'preview_url_template' => '{{pr_id}}.{{domain}}', + 'docker_compose_raw' => "services:\n frontend:\n image: nginx:alpine\n backend:\n image: nginx:alpine\n", + 'docker_compose_domains' => json_encode([ + 'frontend' => ['domain' => 'https://myapp.example.com:3000'], + 'backend' => ['domain' => 'https://myapp.example.com:3001/backend'], + ]), + ]); + + // A preview saved before ports moved to overrides still holds port-bearing domains. + $preview = createPreviewForPortTests($this->application->fresh(), 136, [ + 'docker_compose_domains' => json_encode([ + 'frontend' => ['domain' => 'https://136.myapp.example.com:3000'], + 'backend' => ['domain' => 'https://136.myapp.example.com:3001/backend'], + ]), + ]); + + // The deployment job regenerates the preview domains before it posts the comment. + $preview->generate_preview_fqdn_compose(); + + $job = new ApplicationPullRequestUpdateJob($this->application->fresh(), $preview->fresh(), ProcessStatus::FINISHED); + $links = (fn (): string => $this->getPreviewLinks())->call($job); + + expect($links)->toBe('[Open frontend](https://136.myapp.example.com) | [Open backend](https://136.myapp.example.com/backend) | ') + ->and($preview->fresh()->domain_port_overrides)->toBe([ + 'https://136.myapp.example.com' => 3000, + 'https://136.myapp.example.com/backend' => 3001, + ]); +}); + it('copies the parent domain port override onto a generated preview domain', function () { $this->application->update([ 'fqdn' => 'https://app.example.com:8080',