make(Illuminate\Contracts\Http\Kernel::class); $request = Illuminate\Http\Request::create('/', 'GET'); $response = $kernel->handle($request); if ($response->getStatusCode() !== 200) throw new RuntimeException('Homepage did not render'); $doc = new DOMDocument(); libxml_use_internal_errors(true); $doc->loadHTML($response->getContent()); $xp = new DOMXPath($doc); foreach (['Extra Pet Profile Slot' => 'Add Another Pet', 'Extra 10 Pawzody Credits' => 'Add 10 Portraits Credits'] as $title => $bullet) { $nodes = $xp->query('//section[@id="pricing"]//a[.//div[normalize-space(text())="'.$title.'"]]'); if ($nodes->length !== 1) throw new RuntimeException('Missing card: '.$title); $items = $xp->query('.//ul/li', $nodes->item(0)); if ($items->length !== 1 || trim($items->item(0)->textContent) !== $bullet) throw new RuntimeException('Wrong bullets: '.$title); if (preg_match('/\b(?:Pasori|AI)\s+credits\b/i', $nodes->item(0)->textContent)) throw new RuntimeException('Old label remains'); echo $title . ': verified one bullet, "' . $bullet . '"' . PHP_EOL; } $kernel->terminate($request, $response);