百度手机浏览器的体验地址: http://shouji.baidu.com/browser/
=========================正文===========================================
从上一篇的执行示意图中可以看到,LayoutTest 的执行以及报告生成都发生在 apk
中,所以 apk 是这个测试方案的核心,本文就着重讲述这个 apk
mTestsRelativePath = arguments.getString("path");
顾名思义,是管理者的角色,实际上是负责TestsListActivity、Executor 还有一个 Summarizer 进行沟通的。
三个Activity,
是通 luncher 点开apk之后展现测试列表的 Activity,如下图:
主要作用是遍历 server 端的目录,找到给定路径下面所有的测试case,存入到变量中,调用 Executor 去执行,并且等 executor 的执行结果,把结果通过 managerService 传递给 Summerizer。
是真正加载测试用例(网页)的activity,它封装了百度的统一内核SDK,统一内核SDK封装了T5 内核。executor 中通过 BWebView.loadUrl 加载 TestsListActivity 传递过来的 url,调用到 T5 内核进行 html 的解析、渲染,JavaScript 的执行 等。当页面加载完成之后,会调用 dumpAsText 把页面中的文本导入到文本文件中。比如下面这个测试用例:
fast/cookies/local-file-can-set-cookies.html
<html> <head> <title>Local File Can Set Cookies</title> <script src="../../fast/js/resources/js-test-pre.js"></script> </head> <body> <script> description('This test checks that a local file can set cookies. See: rdar://problem/5379090 REGRESSION: Cannot set cookies for local files'); shouldBe("document.cookie.indexOf('ppkcookie1=testcookie')", "-1"); document.cookie = 'ppkcookie1=testcookie'; shouldBeTrue("document.cookie.indexOf('ppkcookie1=testcookie') >= 0"); </script> <script src="../../fast/js/resources/js-test-post.js"></script> </body> </html>
在相同目录下由一个文件 fast/cookies/local-file-can-set-cookies-expected.txt
This test checks that a local file can set cookies. See: rdar://problem/5379090 REGRESSION: Cannot set cookies for local files On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". PASS document.cookie.indexOf('ppkcookie1=testcookie') is -1 PASS document.cookie.indexOf('ppkcookie1=testcookie') >= 0 is true PASS successfullyParsed is true TEST COMPLETELayoutTest 执行完这个 case 之后页面会显示如下图:
dumpAsText 会把页面存到 sdcard 里面,文件名是 fast/cookies/local-file-can-set-cookies-actual.txt,当然,字体信息会丢失,但是不影响文本比对。
之后对比 fast/cookies/local-file-can-set-cookies-expected.txt 和fast/cookies/local-file-can-set-cookies-actual.txt
如果两者相同,就PASS,如果不同,就 Fail。 (ps. 如果这个case 过不了,显然是一个最基本的问题,浏览器引擎根本无法上线使用。)
下一篇再分析详细过程