通过无头PhantomJS浏览器/grunt-contrib-qunit进行的UI5 QUnit自动化不起作用

2020-08-26 08:53发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,我在通过CI/CD命令行界面对UI5应用程序进行QUnit测试自动化时遇到了麻烦。

当从Documentation SDK(" Explored App")中获取最佳实践示例代码时,例如#/sample ... testing.16/preview

下载源代码zip并解压缩到本地文件夹,例如c:\ test。

在根目录(/webapp上方)配置一个简单的package.json

 {
   " name":" projectName",
   " version":" 1.0.0",
   " devDependencies":{
     " grunt":"〜0.4.1",
     " grunt-contrib-qunit":"> = 0.2.1"
   }
 } 

咕unt声文件(mygruntfile.js)

 module.exports = function(grunt){
     "使用严格";
     grunt.initConfig({
         qunit:{
             全部:['webapp/test/unit/unitTests.qunit.html']
         }
     });
     grunt.loadNpmTasks('grunt-contrib-qunit');
     grunt.registerTask('default',['qunit']);
 }; 

然后在命令提示符的根目录下,安装节点依赖项

 npm安装

并运行grunt版本

 grunt --gruntfile mygruntfile.js --verbose --debug 

您将看到PhantomJS无头浏览器运行时出现多个错误。

我试图用相同的技术来证明,但是在独立的QUnit引导页面上进行测试,并测试了库(即没有任何SAP/UI5代码)。 有趣的是,我还发现了错误,如果从QUnit引导html页面中删除了QUnit脚本标记,则可以解决该错误。

我认为这是由于grunt-contrib-qunit注入了自己的QUnit版本,并且与引导页面中定义的实例冲突。

以下是SAP测试脚本方案和我的最小qunit测试方案(在错误输出的第65行上)常见的一个明显错误:

 [D] [" phantomjs"," error.onError"," ReferenceError:找不到变量:QUnit",[{" file":" phantomjs://code/bridge.js"," line"  :14," function":""}]] 

通过我的独立测试,我可以轻松删除对qunit.js的引导引用; 测试将在无头phantomJS中运行,但在Chrome中将失败。 保留它,它可以在Chrome中运行,但无法实现无头phantomJS。

在UI5最佳实践QUnit测试页中,QUnit被包装在SAP需求库中,我不知道如何删除它。

我对社区的问题是
1)是否存在运行UI5 QUnit和OPA5测试的成功的命令行自动化示例? 直接或通过testsuite.qunit.html页面。 或;

2)有人可以建议如何在unitTests.qunit.html引导页面和UI5中删除或更改QUnit引用吗?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,我在通过CI/CD命令行界面对UI5应用程序进行QUnit测试自动化时遇到了麻烦。

当从Documentation SDK(" Explored App")中获取最佳实践示例代码时,例如#/sample ... testing.16/preview

下载源代码zip并解压缩到本地文件夹,例如c:\ test。

在根目录(/webapp上方)配置一个简单的package.json

 {
   " name":" projectName",
   " version":" 1.0.0",
   " devDependencies":{
     " grunt":"〜0.4.1",
     " grunt-contrib-qunit":"> = 0.2.1"
   }
 } 

咕unt声文件(mygruntfile.js)

 module.exports = function(grunt){
     "使用严格";
     grunt.initConfig({
         qunit:{
             全部:['webapp/test/unit/unitTests.qunit.html']
         }
     });
     grunt.loadNpmTasks('grunt-contrib-qunit');
     grunt.registerTask('default',['qunit']);
 }; 

然后在命令提示符的根目录下,安装节点依赖项

 npm安装

并运行grunt版本

 grunt --gruntfile mygruntfile.js --verbose --debug 

您将看到PhantomJS无头浏览器运行时出现多个错误。

我试图用相同的技术来证明,但是在独立的QUnit引导页面上进行测试,并测试了库(即没有任何SAP/UI5代码)。 有趣的是,我还发现了错误,如果从QUnit引导html页面中删除了QUnit脚本标记,则可以解决该错误。

我认为这是由于grunt-contrib-qunit注入了自己的QUnit版本,并且与引导页面中定义的实例冲突。

以下是SAP测试脚本方案和我的最小qunit测试方案(在错误输出的第65行上)常见的一个明显错误:

 [D] [" phantomjs"," error.onError"," ReferenceError:找不到变量:QUnit",[{" file":" phantomjs://code/bridge.js"," line"  :14," function":""}]] 

通过我的独立测试,我可以轻松删除对qunit.js的引导引用; 测试将在无头phantomJS中运行,但在Chrome中将失败。 保留它,它可以在Chrome中运行,但无法实现无头phantomJS。

在UI5最佳实践QUnit测试页中,QUnit被包装在SAP需求库中,我不知道如何删除它。

我对社区的问题是
1)是否存在运行UI5 QUnit和OPA5测试的成功的命令行自动化示例? 直接或通过testsuite.qunit.html页面。 或;

2)有人可以建议如何在unitTests.qunit.html引导页面和UI5中删除或更改QUnit引用吗?

付费偷看设置
发送
2条回答
太Q了
1楼-- · 2020-08-26 09:44

您好,我很乐意报告自己的问题的答案。 一位前同事同事解决了我最初发布的问题。

我的问题1)的答案是 https://github.com/SAP/openui5-sample-app 。 但是,值得注意的是,该示例使用为基于组件的执行而不是iFrame定义的OPA5测试-这需要对单元测试进行代码更改,而不仅仅是构建配置。 这是因为该示例使用了Karma + Istanbul代码覆盖率报告,并且Istanbul不支持iFrames代码覆盖率。

我的问题2的答案是为非PhantomJS浏览器动态编写QUnit js参考:

  
CJones
2楼-- · 2020-08-26 09:35

嗨,
即使我尝试使用相同的gruntfile运行qunit,但我看到qunit正在运行但没有读取测试用例。

PFB下面的错误。

运行" qunit:all"(qunit)任务

[D]任务源:D:\ QUnit \ SAPUI5-master \ SAPUI5-master \ node_modules \ grunt-contrib-qunit \ tasks \ qunit.js

>> 0个测试完成,其中0个失败,0个被跳过,0个待办事项。

>> 0个断言(以0ms为单位),已通过:0,失败:0

(节点:80444)UnhandledPromiseRejectionWarning:错误:协议错误(Page.addScriptToEvaluateOnNewDocument):目标已关闭。

在D:\ QUnit \ SAPUI5-master \ SAPUI5-master \ node_modules \ grunt-contrib-qunit \ node_modules \ puppeteer \ lib \ Connection.js:183:56

在CDPSession.send(D:\ QUnit \ SAPUI5-master \ SAPUI5-master \ node_modules \ grunt-contrib-qunit \ node_modules \ puppeteer \ lib \ Connection.js中的新Promise(:null:null)中的

:182:12)

在Page.evaluateOnNewDocument(D:\ QUnit \ SAPUI5-master \ SAPUI5-master \ node_modules \ grunt-contrib-qunit \ node_modules \ puppeteer \ lib \ Page.js:842:24)

在页面上。<匿名>(D:\ QUnit \ SAPUI5-master \ SAPUI5-master \ node_modules \ grunt-contrib-qunit \ node_modules \ puppeteer \ lib \ helper.js:112:23)

在D:\ QUnit \ SAPUI5-master \ SAPUI5-master \ node_modules \ grunt-contrib-qunit \ tasks \ qunit.js:405:14

在processTicksAndRejections(internal/process/task_queues.js:85:5)

(节点:80444)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。 该错误是由于在没有catch块的情况下抛出异步函数而引起的,或者是由于拒绝了.catch()未处理的承诺而导致的。 (拒绝ID:1)

(节点:80444)[DEP0018] DeprecationWarning:已弃用未处理的承诺拒绝。 将来,未处理的承诺拒绝将以非零退出代码终止Node.js进程。

完成。

请帮助

一周热门 更多>