get('https://pressekonto.test/de/'.$path)->assertSuccessful(); $content = $response->getContent(); expect($content) // Hub-Kopf: Utility-Bar + Hub-Header statt Spoke-Gerüst. ->toContain('Publisher-Hub für') ->toContain('Publisher · Hub') // Hub-Footer inkl. Selfservice-Kündigungsbutton + Kontakt-Modal. // Der Widerrufs-Button entfällt (Entscheidung E2: B2B-only). ->toContain('Verträge hier kündigen') ->not->toContain('open-withdrawal-modal') ->toContain('open-contact-modal') // Kein Spoke-Portal-Branding im Gerüst. ->not->toContain('Pressemitteilungen · DACH'); })->with(['impressum', 'agb', 'datenschutz', 'richtlinien', 'melden', 'api']); test('the hub static page breadcrumb links back to the hub landing', function () { /** @var TestCase $this */ $this->get('https://pressekonto.test/de/impressum') ->assertSuccessful() ->assertSee('href="https://pressekonto.test"', false) ->assertSeeText('pressekonto'); }); test('static pages on the spoke domains keep the spoke shell', function () { /** @var TestCase $this */ $response = $this->get('https://businessportal24.test/de/impressum')->assertSuccessful(); $content = $response->getContent(); expect($content) ->not->toContain('Publisher-Hub für') ->not->toContain('Vertrag widerrufen'); });