Stratégie de tests
La validation des versions de WebBlocks CMS doit être fondée sur le risque. La suite complète reste disponible, mais les correctifs courants doivent commencer par le plus petit script ciblé qui protège la surface modifiée.
Utilisez les commandes natives de Composer :
composer test:release-fast
composer test:package
composer test:update
composer test:install
composer test:artifacts
composer test:admin-smoke
composer test:full
Scripts Composer
composer test:release-fast: la porte agrégée par défaut pour les petits correctifs natifs au paquet. Elle échantillonne délibérément le routage des migrations de mise à jour du paquet, l'extraction du paquet, le comportement actuel de System Updates, le comportement de la commande d'installation du paquet, l'amorçage du provider du paquet et les frontières des artefacts de version enracinés dans le paquet.composer test:package: couverture ciblée de l'exécution du paquet et de la frontière d'autorité des sources. À utiliser pour le provider du paquet, les tranches de routes/vues du paquet, le nettoyage du wrapper, les métadonnées Composer ou les diagnostics d'état du paquet. Utilisez plutôttest:artifactspour la forme du ZIP de version et les vérifications de l'archive des assets publics du paquet, ettest:installpour le comportement d'une installation consommateur neuve.composer test:update: couverture ciblée de l'updater natif au paquet. À utiliser pour System Updates, l'analyse du client du serveur de mises à jour, le comportement du runner de migrations, la persistance de la version installée, la préparation de la sauvegarde, l'extraction du paquet ou les migrations de mise à jour du paquet.composer test:install: couverture ciblée d'une installation consommateur neuve via Composer. À utiliser pourwebblocks:install, le schéma d'installation neuve, la configuration du premier administrateur, l'authentification consommateur et les tests de fumée des routes d'administration/publiques après installation.composer test:artifacts: couverture ciblée de l'archive du paquet de version et de la frontière du checkout des sources. À utiliser dès que.gitattributes, les assets publics du paquet, les métadonnées composer du paquet, les fichiers de support de l'updater, les scripts natifs de version ou la forme du paquet du publisher changent.composer test:admin-smoke: couverture de fumée légère des routes/du layout d'administration. À utiliser pour les changements du layout d'administration partagé, de la barre latérale, du shell de marque fixe du CMS et des partials d'administration partagés.composer test:legacy-bridge: couverture d'archive manuelle pour le chemin de pont géré depuis la racine, retiré, de1.31.53 -> 1.32.33. Ne l'utilisez pas comme porte de version courante pour le modèle natif au paquet.composer test:full: la suite native au paquet complète, hors tests manuels du pont hérité. À utiliser avant les versions majeures, lors de changements transversaux importants ou lorsque des résultats ciblés révèlent un risque plus large.
Vérifications de formatage
Utilisez composer format:changed comme porte de formatage par défaut pour les petits correctifs ciblés. Elle compare les fichiers modifiés à origin/main...HEAD lorsque c'est possible, ajoute les modifications indexées et celles de l'arbre de travail, exécute Pint uniquement sur les fichiers PHP modifiés et lance le garde d'indentation du projet sur les fichiers PHP ou Blade modifiés. Lorsqu'aucun fichier PHP ou Blade n'a changé, elle affiche un message clair indiquant qu'il n'y a rien à faire et se termine avec succès.
Utilisez composer format:test pour la référence de formatage de tout le dépôt lorsqu'un changement est large, critique pour la version ou touche à l'outillage de formatage. Elle exécute Laravel Pint pour le style PHP hors indentation et scripts/check-php-indentation.php pour la règle d'indentation PHP à 2 espaces propre au projet, sur les racines maintenues de sources, de paquet, de routes, de vues, de scripts et de tests. Les correcteurs d'indentation de Pint sont désactivés dans pint.json afin que le garde personnalisé à 2 espaces fasse autorité.
Critique pour la version
Tests représentatifs :
tests/Feature/ReleasePackageBoundaryTest.phptests/Feature/ComposerPackageMetadataTest.phptests/Feature/PackageServiceProviderBootstrapTest.phptests/Feature/PackageConsumerInstallCommandTest.phptests/Feature/Admin/SystemUpdatesTest.phptests/Unit/System/Updates/UpdateMigrationRunnerTest.phptests/Unit/System/Updates/UpdatePackageExtractorTest.php
Exécutez composer test:release-fast pour les petits correctifs natifs au paquet. Ajoutez composer test:full lorsque la version modifie des comportements larges d'administration/de contenu, des contrats de schéma, la portabilité import/export ou le rendu public.
test:release-fast est délibérément une porte agrégée : elle recoupe donc légèrement test:update, test:install et test:artifacts. Pendant l'implémentation, les scripts ciblés ci-dessous sont préférables lorsque la surface modifiée est plus étroite.
Critique pour l'installation du paquet
Tests représentatifs :
tests/Feature/PackageConsumerInstallCommandTest.phptests/Feature/PackageConsumerInstallAuthTest.phptests/Feature/PackageFreshInstallMigrationTest.php
Exécutez composer test:install pour l'installation consommateur neuve via Composer, le schéma neuf, l'amorçage des routes du paquet, la configuration du premier administrateur et les changements touchant l'authentification ou les tests de fumée des routes d'administration/publiques après installation. Utilisez composer test:package lorsque le changement touche aussi l'autorité des sources du paquet, ou composer test:artifacts lorsqu'il touche la forme des artefacts de version.
Critique pour la mise à jour du paquet
Tests représentatifs :
tests/Feature/Admin/SystemUpdatesTest.phptests/Unit/System/Updates/UpdateMigrationRunnerTest.phptests/Unit/System/Updates/UpdatePackageExtractorTest.phptests/Unit/System/Updates/UpdateServerClientTest.phptests/Unit/System/InstalledVersionStoreTest.phptests/Feature/PageTranslationParentKeyUpdateMigrationTest.php
Exécutez composer test:update pour l'analyse du client de l'updater, l'extraction de l'archive du paquet, l'exécution des migrations natives au paquet, le contrôle préalable de sauvegarde, la persistance de la version installée et les changements de migrations de mise à jour du paquet.
Lorsque vous ajoutez une table ou une colonne utilisée par l'administration, l'API, le rendu public, les commandes, un middleware ou tout chemin de code à l'exécution, ajoutez ou mettez à jour un test de non-régression de la migration de mise à jour du paquet. Utilisez des tests ciblés semblables à tests/Feature/CmsApiTokensUpdateMigrationTest.php pour les ajouts de schéma natifs au paquet, et exécutez exactement cette classe de test ainsi que composer test:update. La seule couverture du schéma d'installation neuve ne suffit pas, car System Updates natif au paquet n'exécute pas les migrations de l'hôte ou de la racine.
Critique pour migration / sauvegarde / restauration
Tests représentatifs :
tests/Feature/PageTranslationParentKeyUpdateMigrationTest.php- tests de migration de mise à jour du paquet, par exemple
tests/Feature/CmsApiTokensUpdateMigrationTest.php tests/Feature/Admin/SystemBackupsTest.phptests/Feature/System/SystemBackupRestoreManagerTest.phptests/Feature/Console/SystemBackupRestoreCommandTest.phptests/Unit/System/BackupRestoreArchiveInspectorTest.phptests/Unit/System/DatabaseRestoreRunnerMysqlTest.phptests/Unit/System/DatabaseRestoreRunnerSqliteTest.php
Exécutez la classe de test exacte de la migration pour un correctif qui ne touche qu'une migration, puis composer test:update si la migration passe par System Updates. Ajoutez les classes de sauvegarde et de restauration pour les changements de format d'archive, de dump de base de données, de restauration ou de sauvegarde préalable à la mise à jour.
Pour un schéma que du nouveau code attend immédiatement, la validation doit prouver les deux côtés de la matrice d'installation : le schéma d'installation neuve/consommateur du paquet et la migration de mise à jour native au paquet sur les installations existantes. Ajoutez également une couverture ciblée administration/API/exécution lorsqu'elle manque, afin qu'un schéma absent produise un message d'orientation contrôlé sur la configuration ou la mise à jour plutôt qu'une exception brute de base de données.
Frontière des artefacts de version
Tests représentatifs :
tests/Feature/ReleasePackageBoundaryTest.phptests/Feature/CoreProjectBoundaryTest.phptests/Feature/PackageWrapperCleanupTest.phptests/Feature/Console/PackageStatusCommandTest.php
Exécutez composer test:artifacts pour le contenu actuel du paquet de version natif, la disposition du ZIP enraciné dans le paquet, l'inclusion des assets de public/cms, l'exclusion de project/, le comportement d'archivage du workflow GitHub et les frontières du nettoyage du wrapper du paquet. Cette porte ne valide volontairement pas la forme de l'archive du pont géré depuis la racine, désormais retiré.
Fumée d'administration
Tests représentatifs :
tests/Feature/Admin/AdminDashboardRouteTest.phptests/Feature/Admin/AdminSidebarNavigationTest.phptests/Feature/Admin/SharedAdminPartialPackageViewTest.phptests/Feature/Admin/PagePreviewTest.php
Exécutez composer test:admin-smoke pour les changements de layout, de barre latérale, de partials d'administration partagés, d'amorçage des routes d'administration du paquet, ainsi que pour la couverture de fumée des routes/liens de prévisualisation d'administration. Ajoutez des tests de fonctionnalités d'administration spécifiques lorsque la zone modifiée dépasse la fumée de routes/layout.
Rendu public / contenu
Tests représentatifs :
tests/Feature/PublicEditorialBlocksRenderingTest.phptests/Feature/PublicMediaBlocksTest.phptests/Feature/PublicSharedSlotRenderingTest.phptests/Feature/PublicRichContentTest.phptests/Feature/MediaVisualBlockContractsTest.phptests/Feature/BlockTypePhaseThreeContractsTest.phptests/Feature/Integrity/BlockTranslationIntegrityTest.phptests/Feature/Admin/PageBuilderExperienceTest.phptests/Feature/Admin/PagePreviewTest.php
Exécutez des classes ciblées ou des filtres de méthode pour les changements touchant le rendu des blocs, le shell public, les médias, le texte enrichi, les shared slots, l'intégrité des traductions, le rendu de la prévisualisation d'administration ou le constructeur de pages. Le travail sur la prévisualisation doit prouver que la prévisualisation d'administration authentifiée peut rendre des pages en brouillon, en relecture et publiées sans modifier le comportement des routes publiques, les rapports de visiteurs, l'état de publication ni les hypothèses de recherche/indexation.
Pont hérité / géré depuis la racine (retiré)
Tests d'archive manuels :
tests/Unit/System/Updates/LegacyRootManagedUpdateCompatibilityTest.php- comportement de l'archive du pont couvert par
scripts/build-root-managed-bridge-archive.sh
L'ancien chemin de pont géré depuis la racine n'existe que pour la validation historique/manuelle de la transition achevée 1.31.53 -> 1.32.33 bridge -> 1.32.34+ package-rooted. La politique actuelle du projet est qu'il ne reste plus d'anciennes installations gérées depuis la racine à prendre en charge dans la validation de version courante.
Les portes courantes natives au paquet excluent le groupe PHPUnit legacy et ne dépendent pas de LegacyRootManagedUpdateCompatibilityTest. N'exécutez composer test:legacy-bridge que lorsque vous auditez délibérément le script de pont archivé, modifiez la documentation historique des mises à jour ou enquêtez sur un scénario de récupération antérieur au modèle natif au paquet. Ne bloquez pas les versions natives au paquet ordinaires à cause de cette couverture du pont retiré.
Candidats lents / réservés à la suite complète
Ces classes ont beaucoup de valeur, mais elles sont larges, coûteuses ou riches en contenu. Pendant l'implémentation, préférez des filtres de méthode ciblés et incluez-les dans la suite complète ou dans la validation du domaine fonctionnel lorsque c'est pertinent :
tests/Feature/Admin/PageBuilderExperienceTest.php: couverture très large du constructeur de pages et du flux de gestion de contenu.tests/Feature/SiteExportImportTest.php: flux complets de reconstruction et de portabilité export/import.tests/Feature/ContactFormModuleTest.php: comportement large du formulaire de contact, des e-mails, des réglages et des notifications.tests/Feature/PublicSharedSlotRenderingTest.php: rendu des shared slots et comportement de bascule sur les pages publiques.tests/Feature/MediaVisualBlockContractsTest.php: contrats de blocs et comportement de rendu fortement axés sur les médias.tests/Feature/Admin/MediaManagementTest.php: flux de travail des médias dans l'administration.tests/Feature/Admin/PageEditorialWorkflowTest.php: comportement des états du flux de travail éditorial.
Candidats au nettoyage
| Fichier de test | Pourquoi il peut être obsolète ou redondant | Couverture plus récente pour le même risque | Action recommandée |
|---|---|---|---|
| tests/Unit/System/Updates/LegacyRootManagedUpdateCompatibilityTest.php | Protège l'ancien comportement de l'updater géré depuis la racine en 1.31.53. Il ne reste plus d'anciennes installations gérées depuis la racine à prendre en charge. | Couverture des mises à jour natives au paquet dans SystemUpdatesTest, UpdateMigrationRunnerTest, UpdatePackageExtractorTest et ReleasePackageBoundaryTest. | Conservé uniquement dans le groupe legacy et dans composer test:legacy-bridge ; exclu des portes courantes natives au paquet. |
| Assertions de pont dans tests/Feature/ReleasePackageBoundaryTest.php | Le test d'artefacts de version mêlait les frontières actuelles enracinées dans le paquet et les assertions sur le script de pont géré depuis la racine. | La forme de version enracinée dans le paquet est couverte par la même classe ; le comportement du pont est historique. | Déplacées dans LegacyRootManagedUpdateCompatibilityTest pour que ReleasePackageBoundaryTest reste natif au paquet. |
| L'habitude de valider une version avec un large --filter=Package | Exécute des tests sans rapport dont le nom contient Package et répète des vérifications d'archive/d'installation coûteuses. | composer test:package nomme explicitement la porte de paquet visée. | Remplacer l'usage courant par des portes fondées sur les scripts. |
| tests/Feature/PackageConsumerInstallAuthTest.php avec PackageConsumerInstallCommandTest.php | Les deux exercent l'état d'installation neuve ; l'un porte sur la référence de la commande, l'autre sur la fumée routes/authentification. | Ensemble, ils restent utiles pour les versions touchant l'installation, désormais sous composer test:install. | Garder les deux pour l'instant ; envisager de réduire la matrice de routes si la validation d'installation devient trop lente. |
| tests/Feature/PackageServiceProviderBootstrapTest.php | Les assertions larges sur l'autorité des sources du paquet peuvent recouper les tests de nettoyage du wrapper et d'état du paquet. | PackageWrapperCleanupTest et PackageStatusCommandTest couvrent des tranches plus étroites. | Garder comme critique pour la version tant que la transition vers le paquet est récente ; réexaminer une fois le modèle natif au paquet stabilisé. |
Groupes PHPUnit
La suite n'utilise actuellement qu'un groupe PHPUnit legacy restreint, réservé à la couverture du pont géré depuis la racine désormais retiré. Les scripts composer courants excluent ce groupe, tandis que composer test:legacy-bridge l'exécute délibérément. Des groupes plus larges comme package, update, release, artifact, admin-smoke et slow pourront être ajoutés plus tard, une fois les frontières des scripts stabilisées.