Estrategia de pruebas
La validación de versiones de WebBlocks CMS debe basarse en el riesgo. La suite completa sigue disponible, pero las correcciones rutinarias deben empezar por el script más pequeño y específico que proteja la superficie modificada.
Utilice los comandos nativos 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 de Composer
composer test:release-fast: la puerta agregada por defecto para pequeñas correcciones nativas del paquete. Muestrea deliberadamente el enrutado de las migraciones de actualización del paquete, la extracción del paquete, el comportamiento actual de System Updates, el comportamiento del comando de instalación del paquete, el arranque del proveedor del paquete y los límites de los artefactos de versión con raíz en el paquete.composer test:package: cobertura focalizada del entorno de ejecución del paquete y del límite de autoridad del código fuente. Úselo para el proveedor del paquete, los fragmentos de rutas/vistas del paquete, la limpieza del wrapper, los metadatos de Composer o los diagnósticos de estado del paquete. Usetest:artifactsen su lugar para la forma del ZIP de la versión y las comprobaciones del archivo de recursos públicos del paquete, ytest:installpara el comportamiento de una instalación nueva de consumidor.composer test:update: cobertura focalizada del actualizador nativo del paquete. Úselo para System Updates, el análisis del cliente del servidor de actualizaciones, el comportamiento del ejecutor de migraciones, la persistencia de la versión instalada, la preparación de la copia de seguridad, la extracción del paquete o las migraciones de actualización del paquete.composer test:install: cobertura focalizada de una instalación nueva de consumidor con Composer. Úselo parawebblocks:install, el esquema de instalación nueva, la configuración del primer administrador, la autenticación del consumidor y las pruebas de humo de rutas de administración/públicas tras la instalación.composer test:artifacts: cobertura focalizada del archivo del paquete de versión y del límite del checkout de código fuente. Úselo siempre que cambien.gitattributes, los recursos públicos del paquete, los metadatos de composer del paquete, los archivos de soporte del actualizador, los scripts nativos de versión o la forma del paquete del publicador.composer test:admin-smoke: cobertura ligera de humo de rutas/layout de administración. Úselo para cambios en el layout compartido de administración, la barra lateral, el shell fijo de marca del CMS y los partials compartidos de administración.composer test:legacy-bridge: cobertura de archivo histórico y ejecución manual para la ruta puente gestionada desde la raíz, ya retirada, de1.31.53 -> 1.32.33. No lo use como puerta rutinaria de versión nativa del paquete.composer test:full: la suite nativa del paquete completa, excluidas las pruebas manuales del puente heredado. Úselo antes de versiones importantes, ante cambios transversales de gran alcance o cuando los resultados focalizados apunten a un riesgo más amplio.
Comprobaciones de formato
Utilice composer format:changed como puerta de formato por defecto para pequeñas correcciones focalizadas. Compara los archivos modificados con origin/main...HEAD cuando está disponible, añade las ediciones preparadas y las del árbol de trabajo, ejecuta Pint solo sobre los archivos PHP modificados y ejecuta el guardián de indentación del proyecto sobre los archivos PHP o Blade modificados. Cuando no hay archivos PHP o Blade modificados, imprime un mensaje claro de que no hay nada que hacer y termina correctamente.
Utilice composer format:test para la línea base de formato de todo el repositorio cuando un cambio sea amplio, crítico para la versión o afecte a las herramientas de formato. Ejecuta Laravel Pint para el estilo PHP no relacionado con la indentación y scripts/check-php-indentation.php para la regla de indentación PHP de 2 espacios propia del proyecto en las raíces mantenidas de código fuente, paquete, rutas, vistas, scripts y pruebas. Los fixers de indentación de Pint están desactivados en pint.json para que el guardián personalizado de 2 espacios siga siendo la referencia.
Crítico para la versión
Pruebas representativas:
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
Ejecute composer test:release-fast para pequeñas correcciones nativas del paquete. Añada composer test:full cuando la versión cambie comportamientos amplios de administración/contenido, contratos de esquema, portabilidad de importación/exportación o el renderizado público.
test:release-fast es deliberadamente una puerta agregada, por lo que se solapa ligeramente con test:update, test:install y test:artifacts. Durante la implementación se prefieren los scripts focalizados que aparecen a continuación cuando la superficie modificada es más estrecha.
Crítico para la instalación del paquete
Pruebas representativas:
tests/Feature/PackageConsumerInstallCommandTest.phptests/Feature/PackageConsumerInstallAuthTest.phptests/Feature/PackageFreshInstallMigrationTest.php
Ejecute composer test:install para cambios en la instalación nueva de consumidor con Composer, el esquema nuevo, el arranque de rutas del paquete, la configuración del primer administrador y las pruebas de humo de autenticación o de rutas de administración/públicas tras la instalación. Use composer test:package cuando el cambio afecte además a la autoridad del código fuente del paquete, o composer test:artifacts cuando afecte a la forma de los artefactos de versión.
Crítico para la actualización del paquete
Pruebas representativas:
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
Ejecute composer test:update para cambios en el análisis del cliente del actualizador, la extracción del archivo del paquete, la ejecución de migraciones nativas del paquete, la comprobación previa de la copia de seguridad, la persistencia de la versión instalada y las migraciones de actualización del paquete.
Cuando añada una tabla o una columna que utilicen la administración, la API, el renderizado público, los comandos, el middleware o cualquier ruta de código en ejecución, añada o actualice una prueba de regresión de la migración de actualización del paquete. Use pruebas focalizadas similares a tests/Feature/CmsApiTokensUpdateMigrationTest.php para las adiciones de esquema nativas del paquete y ejecute esa clase de prueba concreta junto con composer test:update. La cobertura del esquema de instalación nueva por sí sola no basta, porque System Updates nativo del paquete no ejecuta las migraciones del anfitrión/raíz.
Crítico para migración / copia de seguridad / restauración
Pruebas representativas:
tests/Feature/PageTranslationParentKeyUpdateMigrationTest.php- pruebas de migración de actualización del paquete como
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
Ejecute la clase de prueba exacta de la migración para una corrección que solo afecte a una migración y, después, composer test:update si la migración se ejecuta a través de System Updates. Añada las clases de copia de seguridad y restauración cuando cambien el formato del archivo, el volcado de la base de datos, la restauración o la copia de seguridad previa a la actualización.
Para el esquema que el código nuevo espera de inmediato, la validación debe demostrar ambos lados de la matriz de instalación: el esquema de instalación nueva/de consumidor del paquete y la migración de actualización nativa del paquete en instalaciones existentes. Añada también cobertura focalizada de administración/API/ejecución cuando falte, para que un esquema ausente produzca una guía controlada de configuración/actualización en lugar de una excepción de base de datos en bruto.
Límites de los artefactos de versión
Pruebas representativas:
tests/Feature/ReleasePackageBoundaryTest.phptests/Feature/CoreProjectBoundaryTest.phptests/Feature/PackageWrapperCleanupTest.phptests/Feature/Console/PackageStatusCommandTest.php
Ejecute composer test:artifacts para el contenido actual del paquete de versión nativo, la disposición del ZIP con raíz en el paquete, la inclusión de los recursos de public/cms, la exclusión de project/, el comportamiento del archivo del flujo de trabajo de GitHub y los límites de la limpieza del wrapper del paquete. Esta puerta no valida intencionadamente la forma del archivo del puente gestionado desde la raíz, ya retirado.
Humo de administración
Pruebas representativas:
tests/Feature/Admin/AdminDashboardRouteTest.phptests/Feature/Admin/AdminSidebarNavigationTest.phptests/Feature/Admin/SharedAdminPartialPackageViewTest.phptests/Feature/Admin/PagePreviewTest.php
Ejecute composer test:admin-smoke para cambios en el layout, la barra lateral, los partials compartidos de administración, el arranque de rutas de administración del paquete y la cobertura de humo de rutas/enlaces de vista previa de administración. Añada pruebas específicas de funcionalidades de administración cuando el área modificada vaya más allá del humo de rutas/layout.
Renderizado público / contenido
Pruebas representativas:
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
Ejecute clases focalizadas o filtros de método para cambios en el renderizado de bloques, el shell público, los medios, el texto enriquecido, los shared slots, la integridad de las traducciones, el renderizado de la vista previa de administración o el constructor de páginas. El trabajo sobre la vista previa debe demostrar que la vista previa de administración autenticada puede renderizar páginas en borrador, en revisión y publicadas sin cambiar el comportamiento de las rutas públicas, los informes de visitantes, el estado de publicación ni las suposiciones de búsqueda/indexación.
Puente heredado / gestionado desde la raíz (retirado)
Pruebas manuales de archivo histórico:
tests/Unit/System/Updates/LegacyRootManagedUpdateCompatibilityTest.php- comportamiento del archivo del puente cubierto por
scripts/build-root-managed-bridge-archive.sh
La antigua ruta puente gestionada desde la raíz existe únicamente para la validación histórica/manual de la transición ya completada 1.31.53 -> 1.32.33 bridge -> 1.32.34+ package-rooted. La política actual del proyecto es que no queda ninguna instalación antigua gestionada desde la raíz a la que dar soporte en la validación rutinaria de versiones.
Las puertas rutinarias nativas del paquete excluyen el grupo legacy de PHPUnit y no dependen de LegacyRootManagedUpdateCompatibilityTest. Ejecute composer test:legacy-bridge solo cuando audite intencionadamente el script del puente archivado, cambie la documentación histórica de actualizaciones o investigue un escenario de recuperación previo a la era nativa del paquete. No bloquee las versiones nativas del paquete normales por esta cobertura del puente retirado.
Candidatas lentas / solo para la suite completa
Estas clases son muy valiosas, pero amplias, costosas o cargadas de contenido. Durante la implementación es preferible usar filtros de método focalizados e incluirlas en la suite completa o en la validación del área funcional cuando proceda:
tests/Feature/Admin/PageBuilderExperienceTest.php: cobertura muy extensa del constructor de páginas y del flujo de trabajo de gestión de contenido.tests/Feature/SiteExportImportTest.php: flujos completos de reconstrucción y portabilidad de exportación/importación.tests/Feature/ContactFormModuleTest.php: comportamiento amplio del formulario de contacto, el correo, los ajustes y las notificaciones.tests/Feature/PublicSharedSlotRenderingTest.php: renderizado de shared slots y comportamiento de cambio entre ellos en las páginas públicas.tests/Feature/MediaVisualBlockContractsTest.php: contratos de bloque y comportamiento de renderizado con mucho uso de medios.tests/Feature/Admin/MediaManagementTest.php: flujos de trabajo de medios en la administración.tests/Feature/Admin/PageEditorialWorkflowTest.php: comportamiento de los estados del flujo de trabajo editorial.
Candidatas a limpieza
| Archivo de prueba | Por qué puede estar obsoleto o duplicado | Cobertura más reciente para el mismo riesgo | Acción recomendada |
|---|---|---|---|
| tests/Unit/System/Updates/LegacyRootManagedUpdateCompatibilityTest.php | Protege el comportamiento del antiguo actualizador gestionado desde la raíz de 1.31.53. Ya no quedan instalaciones antiguas gestionadas desde la raíz a las que dar soporte. | Cobertura de actualización nativa del paquete en SystemUpdatesTest, UpdateMigrationRunnerTest, UpdatePackageExtractorTest y ReleasePackageBoundaryTest. | Se conserva únicamente en el grupo legacy y en composer test:legacy-bridge; excluida de las puertas rutinarias nativas del paquete. |
| Aserciones sobre el puente en tests/Feature/ReleasePackageBoundaryTest.php | La prueba de artefactos de versión mezclaba los límites actuales con raíz en el paquete con aserciones del script puente gestionado desde la raíz. | La forma de la versión con raíz en el paquete está cubierta por la misma clase; el comportamiento del puente es histórico. | Trasladadas a LegacyRootManagedUpdateCompatibilityTest para que ReleasePackageBoundaryTest siga siendo nativa del paquete. |
| La costumbre de validar la versión con un amplio --filter=Package | Ejecuta pruebas con nombre de paquete no relacionadas y repite costosas comprobaciones de archivo/instalación. | composer test:package nombra explícitamente la puerta de paquete prevista. | Sustituir el uso rutinario por puertas basadas en scripts. |
| tests/Feature/PackageConsumerInstallAuthTest.php junto con PackageConsumerInstallCommandTest.php | Ambas ejercitan el estado de instalación nueva; una se centra en la línea base del comando y la otra en el humo de rutas/autenticación. | Juntas siguen siendo útiles para las versiones con cambios de instalación, ahora bajo composer test:install. | Conservar ambas por ahora; considerar reducir la matriz de rutas si la validación de instalación se vuelve demasiado lenta. |
| tests/Feature/PackageServiceProviderBootstrapTest.php | Las amplias aserciones sobre la autoridad del código fuente del paquete pueden solaparse con las pruebas de limpieza del wrapper y de estado del paquete. | PackageWrapperCleanupTest y PackageStatusCommandTest cubren porciones más estrechas. | Mantener como crítica para la versión mientras la transición al paquete sea reciente; revisar cuando el modelo nativo del paquete se estabilice. |
Grupos de PHPUnit
La suite usa actualmente un grupo legacy de PHPUnit muy acotado, solo para la cobertura del puente gestionado desde la raíz ya retirado. Los scripts rutinarios de composer excluyen ese grupo, mientras que composer test:legacy-bridge lo ejecuta de forma deliberada. Grupos más amplios como package, update, release, artifact, admin-smoke y slow pueden añadirse más adelante, una vez que se hayan asentado los límites de los scripts.