自动测试自适应表单 automate-testing-of-adaptive-forms
概述 overview
自适应表单是客户交互的必备组件。 测试自适应表单时务必要进行每项更改,例如推出新的修补程序包或更改表单中的规则。 但是,功能测试自适应表单及其中的每个字段可能很繁琐。
Calvin允许您在Web浏览器中自动测试自适应表单。 卡尔文利用 霍布斯用于运行测试的用户界面,并提供了以下工具:
- 用于创建测试的JavaScript API。
- 用于运行测试的用户界面。
使用Calvin,您可以在CRXDE中创建测试用例,并直接在Web浏览器中运行UI测试,以彻底测试自适应表单的以下方面:
前提条件 prerequisites
在使用本文创建测试用例之前,您需要了解以下信息:
- 使用创建测试包和执行测试用例 霍布斯
- Hobbes JavaScript API
- Calvin JavaScript API
示例:使用Hobbes作为测试框架,为自适应表单创建测试套件 example-create-a-test-suite-for-an-adaptive-form-using-hobbes-as-testing-framework
以下示例将指导您创建一个测试套件,用于测试多个自适应表单。 您需要为每个需要测试的表单创建单独的测试案例。 通过执行与以下步骤类似的步骤并在步骤11中修改JavaScript代码,您可以创建自己的测试包来测试自适应表单。
-
在Web浏览器中转到CRXDE Lite:
https://[server]:[port]/crx/de
. -
右键单击/etc/clientlibs子文件夹,然后单击 创建>创建节点. 输入名称(此处为afTestRegistration),将节点类型指定为cq:ClientLibraryFolder,然后单击 确定.
clientlibs文件夹包含应用程序(JS和Init)的注册方面。 建议您在clientlibs文件夹中注册所有特定于表单的霍布斯测试套件对象。
-
在新创建的节点(此处为afTestRegistration)中指定以下属性值,然后单击 全部保存. 这些属性可帮助霍布斯将文件夹识别为测试文件。 要将此客户端库作为其他客户端库中的依赖项重复使用,请将其命名为granite.testing.calvin.tests。
-
右键单击测试节点(此处为 afTestRegistration) 然后单击 创建>创建文件. 将文件命名为js.txt,然后单击 确定.
-
在js.txt文件中,添加以下文本:
code language-none #base=. js.txt
-
单击 全部保存 然后,关闭js.txt文件。
-
右键单击测试节点(此处为 afTestRegistration) 单击 创建>创建文件. 将文件命名为init.js,然后单击 确定.
-
将以下代码复制到init.js文件中,然后单击 全部保存:
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));
上述代码将创建一个名为 自适应表单 — 演示测试. 要创建具有不同名称的测试包,请相应地更改名称。
-
单击 创建 > 创建节点 为要测试的每个表单在clientlib文件夹下创建节点。 此示例使用名为的节点 testForm 测试名为的自适应表单 testForm
.
指定以下属性并单击 确定:- 名称:testForm(您的表单名称)
- 类型:cq:ClientLibraryFolder
-
将以下属性添加到新创建的节点(此处为testForm)以测试自适应表单:
table 0-row-3 1-row-3 2-row-3 属性 类型 值 类别 字符串[] granite.testing.hobbes.tests, granite.testing.hobbes.test.testForm 依赖 字符串[] granite.testing.calvin.tests note note NOTE 此示例使用对客户端lib granite.testing.calvin.tes的依赖关系来更好地管理。 此示例还添加了客户端库类别“granite.testing.hobbes.test.testForm”,以便在必要时重复使用此客户端库。 -
右键单击为测试表单创建的文件夹(此处为testForm),然后选择 创建>创建文件. 将文件命名为scriptingTest.js,并将以下代码添加到该文件中,然后单击 全部保存。
要使用以下代码测试其他自适应表单,请在 navigateTo (第11、36和62行)和相应的测试用例。 有关用于测试表单和表单对象不同方面的API的更多信息,请参阅 Calvin API.
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));
将创建测试用例。 继续运行测试案例,通过Hobbes测试自适应表单。 有关运行测试案例的步骤,请参阅 使用自动测试在测试您的用户界面中执行测试.
您还可以在附加的文件SampleTestPackage.zip中安装包,以获得与示例中所述步骤相同的结果:使用霍布斯作为测试框架,为自适应表单创建测试套件。
使用自动测试来测试您的用户界面 testing-your-ui-using-automated-tests
运行单个测试包 running-a-single-test-suite
测试包可以单独运行。 运行测试包时,页面会随测试用例及其操作的执行而发生更改,并且结果会在测试完成后显示。 图标指示结果。
复选标记图标表示通过的测试:
“X”图标表示测试失败:
要运行测试包,请执行以下操作:
-
在“测试”面板中,单击或点按要运行的测试案例名称,以展开操作的详细信息。
-
单击或点按运行测试按钮。
-
测试执行时,占位符将替换为页面内容。
-
通过点按或单击说明以打开“结果”面板,查看测试案例的结果。 点按或单击“结果”面板中的测试用例名称,可显示所有详细信息。
测试AEM自适应表单的步骤与测试AEM UI的步骤类似。 有关测试自适应表单的更多信息,请参阅 测试您的UI:
- 查看测试包
- 运行多个测试