Automatizar las pruebas de formularios adaptables automate-testing-of-adaptive-forms
Información general overview
Los formularios adaptables son integrales en las interacciones de los clientes. Es importante probar los formularios adaptables con cada cambio que realice en ellos, como cuando se despliega un nuevo paquete de correcciones o se cambia una regla del formulario. Sin embargo, las pruebas funcionales de los formularios adaptables y de todos los campos que contienen pueden ser tediosos.
Calvin le permite automatizar las pruebas de sus formularios adaptables en el explorador web. Calvin utiliza HobbesLa interfaz de usuario de para ejecutar las pruebas y proporciona las siguientes herramientas:
- Una API de JavaScript para crear pruebas.
- Una interfaz de usuario para ejecutar pruebas.
Con Calvin, puede crear casos de prueba en CRXDE y ejecutar pruebas de IU directamente en el explorador web para probar a fondo los siguientes aspectos de sus formularios adaptables:
Requisitos previos prerequisites
Antes de usar este artículo para crear los casos de prueba, debe saber lo siguiente:
- Creación de grupos de pruebas y ejecución de casos de prueba mediante Hobbes
- API de JavaScript de Hobbes
- API de JavaScript de Calvin
Ejemplo: Crear un grupo de pruebas para un formulario adaptable utilizando Hobbes como marco de pruebas example-create-a-test-suite-for-an-adaptive-form-using-hobbes-as-testing-framework
El siguiente ejemplo lo acompaña durante la creación de un grupo de pruebas para probar varios formularios adaptables. Debe crear un caso de prueba independiente para cada formulario que necesite probar. Si sigue pasos similares a los siguientes y modifica el código JavaScript en el paso 11, puede crear su propio grupo de pruebas para probar los formularios adaptables.
-
Vaya al CRXDE Lite en el explorador web:
https://[server]:[port]/crx/de
. -
Haga clic con el botón derecho en la subcarpeta /etc/clientlibs y haga clic en Crear > Crear nodo. Escriba un nombre (aquí afTestRegistration), especifique el tipo de nodo como cq:ClientLibraryFolder y haga clic en OK.
La carpeta clientlibs contiene el aspecto de registro de su aplicación (JS e Init). Se recomienda registrar todos los objetos de grupos de pruebas de Hobbes específicos de un formulario en la carpeta clientlibs .
-
Especifique los siguientes valores de propiedad en el nodo recién creado (aquí afTestRegistration) y, a continuación, haga clic en Guardar todo. Estas propiedades ayudan a Hobbes a reconocer la carpeta como una prueba. Para reutilizar esta biblioteca de cliente como dependencia en otras bibliotecas de cliente, asígnele el nombre granite.testing.calvin.testing.
-
Haga clic con el botón derecho en el nodo de prueba (aquí afTestRegistration) y haga clic en Crear > Crear archivo. Asigne un nombre al archivo js.txt y haga clic en OK.
-
En el archivo js.txt , agregue el siguiente texto:
code language-none #base=. js.txt
-
Haga clic en Guardar todo y luego cierre el archivo js.txt.
-
Haga clic con el botón derecho en el nodo de prueba (aquí afTestRegistration) y haga clic en Crear > Crear archivo. Asigne un nombre al archivo init.js y haga clic en OK.
-
Copie el siguiente código al archivo init.js y haga clic en Guardar todo:
code language-none (function(window, hobs) { 'use strict'; window.testsuites = window.testsuites || {}; // Registering the test form suite to the sytem // If there are other forms, all registration should be done here window.testsuites.testForm = new hobs.TestSuite("Adaptive Form - Demo Test", { path: '/etc/clientlibs/afTestRegistration/init.js', register: true }); // window.testsuites.testForm1 = new hobs.TestSuite("testForm1"); }(window, window.hobs));
El código anterior crea un grupo de pruebas denominado Formulario adaptable: prueba de demostración. Para crear un grupo de pruebas con un nombre diferente, cambie el nombre en consecuencia.
-
Haga clic en Crear > Crear nodo para crear un nodo en la carpeta clientlib para cada formulario que desee probar. Este ejemplo utiliza un nodo denominado testForm para probar un formulario adaptable denominado testForm
.
Especifique las siguientes propiedades y haga clic en OK:- Nombre: testForm (su nombre de formulario)
- Tipo: cq:ClientLibraryFolder
-
Agregue las siguientes propiedades al nodo recién creado (aquí testForm) para probar un formulario adaptable:
table 0-row-3 1-row-3 2-row-3 Propiedad Tipo Valor categorías Cadena[] granite.testing.hobbes.testing, granite.testing.hobbes.testing.testForm dependencias Cadena[] granite.testing.calvin.tests note note NOTE Este ejemplo utiliza una dependencia de la biblioteca cliente granite.testing.calvin.testing para una mejor administración. En este ejemplo también se agrega una categoría de biblioteca de cliente, "granite.testing.hobbes.testing.testForm", para reutilizar esta biblioteca de cliente, si es necesario. -
Haga clic con el botón derecho en la carpeta que ha creado para el formulario de prueba (aquí testForm) y seleccione Crear > Crear archivo. Asigne un nombre al archivo scriptingTest.js y añada el siguiente código al archivo y haga clic en Guardar todo.
Para utilizar el siguiente código para probar otro formulario adaptable, cambie la ruta y el nombre del formulario en navegarTo (líneas 11, 36 y 62) y los respectivos casos de ensayo. Para obtener más información sobre las API para probar diferentes aspectos de los formularios y los objetos de formulario, consulte API de Calvin.
code language-none (function(window, hobs) { 'use strict'; var ts = new hobs.TestSuite("Script Test", { path: '/etc/clientlibs/testForm/scriptingTest.js', register: false }) .addTestCase(new hobs.TestCase("Checking execution of calculate script") // navigate to the testForm which is to be tested .navigateTo("/content/forms/af/testForm.html?wcmmode=disabled") // check if adaptive form is loaded .asserts.isTrue(function () { return calvin.isFormLoaded() }) .execSyncFct(function () { // create a spy before checking for the expression calvin.spyOnExpression("panel1.textbox1"); // setValue would trigger enter, set the value and exit from the field calvin.setValueInDOM("panel1.textbox", "5"); }) // if the calculate expression was setting "textbox1" value to "5", let's also check that .asserts.isTrue(function () { return calvin.isExpressionExecuted("panel1.textbox1", "Calculate"); }) .execSyncFct(function () { calvin.destroySpyOnExpression("panel1.textbox1"); }) .asserts.isTrue(function () { return calvin.model("panel1.textbox1").value == "5" }) ) .addTestCase(new hobs.TestCase("Calculate script Test") // navigate to the testForm which is to be tested .navigateTo("/content/forms/af/cal/demoform.html?wcmmode=disabled&dataRef=crx:///content/forms/af/cal/prefill.xml") // check if adaptive form is loaded .asserts.isTrue(function () { return calvin.isFormLoaded() }) .execSyncFct(function () { // create a spy before checking for the expression calvin.spyOnExpression("panel2.panel1488218690733.downPayment"); // setValue would trigger enter, set the value and exit from the field calvin.setValueInDOM("panel2.panel1488218690733.priceProperty", "1000000"); }) .asserts.isTrue(function () { return calvin.isExpressionExecuted("panel2.panel1488218690733.downPayment", "Calculate"); }) .execSyncFct(function () { calvin.destroySpyOnExpression("panel2.panel1488218690733.downPayment"); }) .asserts.isTrue(function () { // if the calculate expression was setting "downPayment" value to "10000", let's also check that return calvin.model("panel2.panel1488218690733.downPayment").value == 10000 }) ) .addTestCase(new hobs.TestCase("Checking execution of Value commit script") // navigate to the testForm which is to be tested .navigateTo("/content/forms/af/cal/demoform.html?wcmmode=disabled&dataRef=crx:///content/forms/af/cal/prefill.xml") // check if adaptive form is loaded .asserts.isTrue(function () { return calvin.isFormLoaded() }) .execSyncFct(function () { // create a spy before checking for the expression calvin.spyOnExpression("panel2.panel1488218690733.priceProperty"); // setValue would trigger enter, set the value and exit from the field calvin.setValueInDOM("panel2.panel1488218690733.priceProperty", "100"); }) .asserts.isTrue(function () { return calvin.isExpressionExecuted("panel2.panel1488218690733.priceProperty", "Value Commit"); }) .execSyncFct(function () { calvin.destroySpyOnExpression("panel2.panel1488218690733.priceProperty"); }) .asserts.isTrue(function () { // if the value commit expression was setting "textbox1488215618594" value to "0", let's also check that return calvin.model("panel2.panel1488218690733.textbox1488215618594").value == 0 }) ); // register the test suite with testForm window.testsuites.testForm.add(ts); }(window, window.hobs));
Se crea el caso de prueba. Continúe ejecutando el caso de prueba para probar los formularios adaptables a través de Hobbes. Para ver los pasos para ejecutar los casos de prueba, consulte Ejecución de pruebas en la prueba de la interfaz de usuario mediante pruebas automatizadas.
También puede instalar el paquete en el archivo adjunto SampleTestPackage.zip para obtener los mismos resultados que con los pasos descritos en Ejemplo: Cree un grupo de pruebas para un formulario adaptable usando Hobbes como marco de pruebas.
Pruebas de la interfaz de usuario mediante las pruebas automatizadas testing-your-ui-using-automated-tests
Ejecución de un único grupo de pruebas running-a-single-test-suite
Los grupos de pruebas se pueden ejecutar individualmente. Cuando ejecuta un grupo de pruebas, la página cambia a medida que se ejecutan los casos de prueba y sus acciones y los resultados aparecen después de completar la prueba. Los iconos indican los resultados.
Un icono de marca de verificación indica una prueba pasada:
El icono "X" indica una prueba fallida:
Para ejecutar un grupo de pruebas:
-
En el panel Pruebas, toque o haga clic en el nombre del caso de prueba que desea ejecutar para expandir los detalles de las acciones.
-
Toque o haga clic en el botón Ejecutar pruebas .
-
El marcador de posición se reemplaza por el contenido de la página a medida que se ejecuta la prueba.
-
Revise los resultados del caso de prueba tocando o haciendo clic en la descripción para abrir el panel Resultado. Al tocar o hacer clic en el nombre del caso de prueba en el panel Resultado se muestran todos los detalles.
Los pasos para probar los formularios adaptables AEM son similares a los pasos para probar la IU de AEM. Para obtener más información sobre la prueba de los formularios adaptables, consulte los temas siguientes en Prueba de la interfaz de usuario:
- Visualización de grupos de pruebas
- Ejecución de varias pruebas