Repository navigation
Sélecteur visuel : environnement et connexion au plus juste - #121
Merged
Merged
Conversation
…oyage Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…oyage Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… et cookies du run à un navigateur donné ; clearEnvironment Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ur, idempotence, docblock de clearEnvironment Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t la navigation Un cookie PRESTAFLOW_COOKIES sans domain prend le host de son url, sinon celui de l'URL par défaut d'applyEnvironment() (l'URL capturée pour take()) : sur about:blank, chrome-php en tirerait un domaine nul refusé par CDP. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ookie sur l'URL par défaut take() part d'un TestsSuite::$extraHttpHeaders vide et le rétablit dans son finally (même en exception) : ni héritage des en-têtes d'un run en cours, ni fuite d'Authorization vers la suite du worker. Une url de cookie inexploitable (sans schéma, malformée, non chaîne) passe à l'URL par défaut, sans warning. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…isolation des en-têtes dans take() Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… plafond = temps restant après le rechargement Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…squ'à l'échéance, envoi dès 6 s restantes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…E_WARNING à sa place, README de l'API du sélecteur Attente de l'issue de connexion bornée par loginOutcomeTimeout même avec une échéance (horloges divergentes) ; docblocks de PAGE_RELOAD_MS (connexion AJAX sur PS 1.7/8) et de VisualTestsSuite::nowMs(). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s échéance ; README : exceptions chrome-php brutes de la capture capBackOfficeWaits() et la pose de l'échéance n'écrivent loginOutcomeSeen et loginOutcomeDeadline que si la page de connexion les déclare (PHP 8.2+ : propriété dynamique dépréciée). README : captureCurrent() et take() laissent remonter les exceptions chrome-php (\Exception), catch final dans l'exemple. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Objectif
Le sélecteur visuel de l'app doit capturer une boutique protégée (Basic Auth, en-têtes, cookies) comme le run, et la connexion BO du sélecteur ne doit plus gaspiller son budget.
Changements
TestsSuite::applyEnvironment(object $browser, object $page, ?string $defaultUrl = null): applique au navigateur donné, dans l'ordre du run, la Basic Auth (PRESTAFLOW_BASIC_USER/_PASS),PRESTAFLOW_EXTRA_HEADERSetPRESTAFLOW_COOKIES.before()garde exactement son comportement (les méthodes protégéespreset*restent et délèguent aux mêmes étapes).TestsSuite::clearEnvironment(): vide$extraHttpHeaders(ne fermait jamais d'un job à l'autre dans un worker persistant).PageSnapshot::take()applique l'environnement à sa page dédiée avant la navigation ; il part d'en-têtes vides et rétablit ceux du run en sortie, même en erreur.domain: le domaine est déduit de leururl, sinon (danstake()) de l'URL capturée. Auparavant, chrome-php prenait le host deabout:blanket le cookie était perdu sans message.Login\Page::$loginOutcomeDeadline: échéance de l'attente de l'issue de connexion, bornée par$loginOutcomeTimeout.openBackOfficeCheckpoint()la pose au lieu de réserver 10 s fixes au rechargement ; le formulaire part dès que 6 s restent.redactUrls()masque aussi les jetons doublement encodés ; docblock deUNSTABLE_WARNINGà sa place ; README « Visual picker API ».STDERRhors CLI (php-fpm) ; aucune propriété dynamique créée sur une page de connexion cliente qui n'hérite pas deLogin\Page.Changement visible côté run
Un cookie de
PRESTAFLOW_COOKIESavecurlmais sansdomainest désormais posé (il était refusé silencieusement). Rien d'autre ne change pour le run : sans échéance,login()attend toujours jusqu'à 60 s.Tests
624 tests verts en PHP 8.4 et 8.1 (1 ignoré en 8.1 : le test hors CLI a besoin de
php-cgi). Aucun test ne lance Chrome.Spec :
docs/superpowers/specs/2026-10-07-picker-environment-design.md— plan :docs/superpowers/plans/2026-10-07-picker-environment.md.🤖 Generated with Claude Code