diff --git a/.github/stale.yml b/.github/stale.yml index 29c704e1ce..511784c6ca 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -13,6 +13,7 @@ onlyLabels: [] # Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable exemptLabels: - "maybe-later" + - "priority: high" # Set to true to ignore issues in a project (defaults to false) exemptProjects: true @@ -33,8 +34,8 @@ markComment: > for your contributions. # Comment to post when removing the stale label. -# unmarkComment: > -# Your comment here. +unmarkComment: > + This issue is marked to be `stale` and is going to be closed within a week. If you think it shouldn't be closed, please leave a comment. # Comment to post when closing a stale Issue or Pull Request. # closeComment: > diff --git a/.github/CONTRIBUTING.md b/CONTRIBUTING.md similarity index 51% rename from .github/CONTRIBUTING.md rename to CONTRIBUTING.md index 20b8a6cb23..504eef838d 100644 --- a/.github/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -14,17 +14,45 @@ Please read the [documentation](http://echarts.apache.org/option.html) carefully Any questions in the form of *how can I use echarts to* or *how to use echarts x feature to* belong in [Stack Overflow](http://stackoverflow.com), issues with questions like that in the issue tracker will be closed. +## Release Milestone Discussion + +We will start the discussion about the bugs to fix and features of each release in the [mailing list](https://echarts.apache.org/en/maillist.html). You may subscribe our [mailing list](https://echarts.apache.org/en/maillist.html) to give your valuable advice in the milestone dicussion. + +About our release plan, we will release a mior version at the end of every month. Here is some detail. + +1. Assume our current stable release is 4.3.0. We will start the discussion of milestone of the release two versions ahead, which is 4.5.0 at the beginning of each month. At this time we should also kickoff the developing of the next release, which is 4.4.0. +2. Finish 4.4.0 developing at about 22th of this month and start the testing. And the 4.5.0 milestone discussion is frozen and published on the [GitHub](https://github.com/apache/incubator-echarts/milestone/14) +3. Vote in the mailing list for the 4.4.0 release at the end of this month. + ## Pull Requests -If you wish to fix a bug or add new features, please discuss it with us in an issue first. If there's no issue, please create one using the [echarts issue helper](https://ecomfe.github.io/echarts-issue-helper/). +### Finding Easy Issues to Fix + +You may use [difficulty: easy](https://github.com/apache/incubator-echarts/labels/difficulty%3A%20easy) label to filter issues that we think is easier to fix. These are issues that should be fixed using less time than the average. So if you wish to make some pull requests, this is where you can start with. + +You may also filter with [en](https://github.com/apache/incubator-echarts/issues?q=is%3Aopen+label%3A%22difficulty%3A+easy%22+label%3Aen) label for English issues only. + +### Coding Standard + +Please follow the [coding standard](https://echarts.apache.org/en/coding-standard.html) before you make any changes. + +### Git Message Standard + +(TBD) + +### Contact Us + +If you wish to fix a bug or add new features but don't know how, please discuss it with us in the [mailing list](dev@echarts.apache.org). + ## How to Debug ECharts The following steps help you to set up a developing environment for ECharts. + ### 1. Clone ECharts project -If you wish to make pull requests, you should fork the ECharts project first. Otherwise, just clone it locally. +If you wish to make pull requests, you should **fork the ECharts project** first. Otherwise, just clone it locally. ```bash git clone git@github.com:apache/incubator-echarts.git @@ -38,6 +66,7 @@ git clone git@github.com:ecomfe/zrender.git We assume these projects are downloaded at `~/workspace/echarts` and `~/workspace/zrender`. But their locations can be arbitrary. + ### 2. Install dependencies ```bash @@ -53,11 +82,12 @@ Sometimes, in order to fix an issue within echarts, changes have to be made insi cd ~/workspace/zrender npm link cd ~/workspace/echarts -npm link +npm link zrender ``` With this, you can see that `~/workspace/echarts/node_modules/zrender` is a link to `~/workspace/zrender`. + ### 3. Run and debug To build the ECharts project and watch source file changes (including ZRender project) to rebuild: @@ -75,9 +105,84 @@ node build/build.js Then, open the test cases under `~/workspace/echarts/test` in Web browser. You can add breakpoints under `src` directory. For example, in Chrome Inspect, it looks like: -![Chrome inspect](../asset/contributing-inspect.png) +![Chrome inspect](./asset/contributing-inspect.png) + + +### 4. Add test cases + +In most cases, one or more test cases should be added when developing a feature or fixing a bug. +All of the existing test cases are in directory `~/workspace/echarts/test`. +Check the file `~/workspace/echarts/test/dataZoom-action.html` as an example. + +**Organize test cases:** +Each file can be regard as a **test suite** and each chart in the file can be regard as a **test case**, +which contains one or multiple expected results (check points). +If a feature or bug is related to a chart type or a component type, probably it should belongs to +a test file named `chartOrComponentType-someSubCategory.html`. Or some common feature is related +to multiple chart or component or has nothing to do with chart and component, probably it should +belongs a test file named `featureName-someSubCateogory.html`. + +**The naming of a test file:** +Generally speaking, the name of the test file should start with a chart type or component type +or a common feature name (like "hoverStyle", "clip"). + +**Add a test case:** +If intending to add a test case, firstly try to find in the existing test files which file this +new test case might belongs to. +If an existing file found, add the test case to the file. +Otherwise, add a new test file by commands as follows: + +```shell +# Make a file named "bar-action.html" in directory "echarts/test" with 1 initial chart. +npm run mktest bar-action +# or `npm run mktest bar-action.html` + +# Make a file named "bar-action.html" in directory "echarts/test" with 5 initial charts. +npm run mktest bar-action 5 +``` + +**The expected results and the instructions of user interaction:** +Although we have auto-visual-test tool to run tests, we should better write the expected result +(check points) for each test cases for manual checking. +Some cases need user interactions involved. The instructions should be written clearly. +The expected results and the user instructions should be written in the `title` filed when +creating a test by `testHelper.create` as follows: + +```js +var chart = testHelper.create(echarts, 'main0', { + title: [ + 'Hover on the red circle', + '**A blue label** should appear on the **top of red circle**.' + ], + option: option +}); +``` + + +### 5. Run test cases + +```bash +# puppeteer is not in the devDependencies and needs to be installed manually +npm install puppeteer --no-save +npm run test:visual +``` + +It will run all the test cases under `~/workspace/echarts/test` automatically to compare with the previous version. You can use this to check if your code bring some breaking change. + + +### 6. Check the code style + +The code style should follow the [Code Standard](https://echarts.apache.org/en/coding-standard.html). + +It is recommanded to install [eslint](https://eslint.org) plugin to in your IDE to find the invalid code style. +Otherwise, we can also use +```bash +npm run lint +``` +to check the the code style. + -### 4. Make a pull request +### 7. Make a pull request Fork ECharts project into your own project. Checkout a branch from master branch named `fix-xxxx`, where xxxx is the issue id related. If there's no related issue, you need to create one in most cases to describe what's wrong or what new feature is required. diff --git a/README.md b/README.md index 039e5805af..ee5d328a5f 100644 --- a/README.md +++ b/README.md @@ -9,16 +9,16 @@ ECharts is a free, powerful charting and visualization library offering an easy Now ECharts is an incubator project of Apache Software Foundation. Please check its incubator status [here](http://incubator.apache.org/projects/echarts.html) -**[中文官网](http://echarts.baidu.com)** | **[ENGLISH HOMEPAGE](https://echarts.apache.org/index.html)** +**[中文官网](https://echarts.apache.org/zh/index.html)** | **[ENGLISH HOMEPAGE](https://echarts.apache.org/index.html)** -[![Build Status](https://travis-ci.org/apache/incubator-echarts.svg?branch=master)](https://travis-ci.org/apache/incubator-echarts) [![](https://img.shields.io/npm/dw/echarts.svg?label=npm%20downloads&style=flat)](https://www.npmjs.com/package/echarts) ![Commits Since 4.0.0](https://img.shields.io/github/commits-since/apache/incubator-echarts/4.0.0.svg?colorB=%234c1&style=flat) +[![Build Status](https://travis-ci.org/apache/incubator-echarts.svg?branch=master)](https://travis-ci.org/apache/incubator-echarts) [![](https://img.shields.io/npm/dw/echarts.svg?label=npm%20downloads&style=flat)](https://www.npmjs.com/package/echarts) [![Last npm release](https://img.shields.io/npm/v/echarts)](https://www.npmjs.com/package/echarts) ## Get ECharts You may choose one of the following methods: -+ Download from Official Website in [中文下载页](http://echarts.baidu.com/download.html) -+ Download from Official Website in [English](https://ecomfe.github.io/echarts-doc/public/en/download.html) ++ Download from Official Website in [中文下载页](https://echarts.apache.org/zh/download.html) ++ Download from Official Website in [English](https://echarts.apache.org/en/download.html) + `npm install echarts --save` + CDN: [jsDelivr CDN](https://www.jsdelivr.com/package/npm/echarts?path=dist) @@ -32,136 +32,79 @@ ECharts-GL is an extension pack of ECharts, which provides 3D plots, globe visua ## Docs -+ [Tutorial](http://echarts.baidu.com/tutorial.html) - + [中文](http://echarts.baidu.com/tutorial.html) - + [English](http://ecomfe.github.io/echarts-doc/public/en/tutorial.html) ++ Tutorial + + [中文](https://echarts.apache.org/zh/tutorial.html) + + [English](https://echarts.apache.org/en/tutorial.html) -+ [API](http://echarts.baidu.com/api.html) - + [中文](http://echarts.baidu.com/api.html) - + [English](http://ecomfe.github.io/echarts-doc/public/en/api.html) ++ API + + [中文](https://echarts.apache.org/zh/api.html) + + [English](https://echarts.apache.org/en/api.html) -+ [Option Manual](http://echarts.baidu.com/option.html) - + [中文](http://echarts.baidu.com/option.html) - + [English](http://ecomfe.github.io/echarts-doc/public/en/option.html) ++ Option Manual + + [中文](https://echarts.apache.org/zh/option.html) + + [English](https://echarts.apache.org/en/option.html) -## Resources - - -### Awesome ECharts - -[https://github.com/ecomfe/awesome-echarts](https://github.com/ecomfe/awesome-echarts) - -### Official Extensions - -+ [水球图 Liquidfill](https://github.com/ecomfe/echarts-liquidfill) - -+ [字符云 Wordcloud](https://github.com/ecomfe/echarts-wordcloud) - -+ [Graph Modularity](https://github.com/ecomfe/echarts-graph-modularity) Graph modularity extension for community detection - -+ [百度地图扩展](https://github.com/ecomfe/echarts/tree/master/extension/bmap) - -+ [vue-echarts](https://github.com/ecomfe/vue-echarts) ECharts component for Vue.js - -+ [echarts-stat](https://github.com/ecomfe/echarts-stat) Statistics tool for ECharts - - -### Developers Contributions - - -#### GIS - -+ [leaflet-echarts](https://github.com/wandergis/leaflet-echarts3) by wandergis -+ [arcgis-echarts](https://github.com/wandergis/arcgis-echarts3) by wandergis +## Get Help -+ [echarts-leaflet](https://github.com/gnijuohz/echarts-leaflet) by gnijuohz ++ [GitHub Issues](https://github.com/apache/incubator-echarts/issues) for bug report and feature requests ++ Email [dev@echarts.apache.org](dev@echarts.apache.org) for general questions ++ Subscribe [mailing list](https://echarts.apache.org/en/maillist.html) to get updated with the project -+ [ol3Echarts](https://github.com/sakitam-fdd/ol3Echarts) by sakitam-fdd - -#### Map Data and Tools - -+ [echarts-mapmaker](https://github.com/echarts-maps/echarts-mapmaker) by chfw -+ [echarts-cities-js](https://github.com/echarts-maps/echarts-cities-js) by chfw -+ [echarts-china-cities-js](https://github.com/echarts-maps/echarts-china-cities-js) by chfw -+ [echarts-countries-js](https://github.com/echarts-maps/echarts-countries-js) by chfw - - -#### AngularJS Binding - -+ [angular-echarts](https://github.com/wangshijun/angular-echarts) by wangshijun -+ [echarts-ng](https://github.com/bornkiller/echarts-ng) by bornkiller -+ [ng-echarts](https://github.com/liekkas/ng-echarts) by liekkas -+ [ngx-echarts](https://github.com/xieziyu/ngx-echarts) by xieziyu - -#### Ember Binding -+ [echarts-ember](https://github.com/bruckwubete/echarts-ember) by [bruck wubete](https://github.com/bruckwubete) -+ [ember-cli-echarts](https://github.com/funnelcloudinc/ember-cli-echarts) by FunnelCloud - -#### Vue Component - -+ [vue-echarts](https://github.com/ecomfe/vue-echarts) by ecomfe -+ [vue-echarts](https://github.com/panteng/vue-echarts) by panteng -+ [vue-echarts-v3](https://github.com/xlsdg/vue-echarts-v3) by xlsdg - -#### React Component - -+ [echarts-for-react](https://github.com/hustcc/echarts-for-react) by hustcc -+ [react-echarts](https://github.com/somonus/react-echarts) by somonus -+ [re-echarts](https://github.com/liekkas/re-echarts) by liekkas -+ [react-echarts-v3](https://github.com/xlsdg/react-echarts-v3) by xlsdg -+ [d2recharts](https://github.com/leungwensen/d2recharts) by leungwensen -+ [react-component-echarts](https://github.com/dawiwt/react-component-echarts) by dawiwt - -#### React Native Component - -+ [react-native-echarts](https://github.com/somonus/react-native-echarts) by somonus +## Build -### Other Languages -#### Python +Build echarts source code: -+ [echarts-python](https://github.com/yufeiminds/echarts-python) by yufeiminds -+ [krisk](https://github.com/napjon/krisk) by napjon -+ [pyecharts](https://github.com/chenjiandongx/pyecharts) by chenjiandong +Execute the instructions in the root directory of the echarts: +([Node.js](https://nodejs.org) is required) -#### R +```shell +# Install the dependencies from NPM: +npm install -+ [recharts](https://github.com/taiyun/recharts) by taiyun -+ [recharts](https://github.com/yihui/recharts) by yihui -+ [ECharts2Shiny](https://github.com/XD-DENG/ECharts2Shiny) by XD-DENG -+ [echarts4r](https://github.com/JohnCoene/echarts4r) by JohnCoene +# If intending to build and get all types of the "production" files: +npm run release +# The same as `node build/build.js --release` -#### Julia +# If only intending to get `dist/echarts.js`, which is usually +# enough in dev or running the tests: +npm run build +# The same as `node build/build.js` -+ [ECharts.jl](https://github.com/randyzwitch/ECharts.jl) by randyzwitch +# Get the same "production" files as `node build/build.js`, while +# watching the editing of the source code. Usually used in dev. +npm run watch +# The same as `node build/build.js -w` -#### PureScript +# Check the manual: +npm run help +# The same as `node build/build.js --help` +``` -+ [purescript-echarts](https://github.com/slamdata/purescript-echarts/) +Then the "production" files are generated in `dist` directory. -#### iOS +More custom build approaches can be checked in this tutorial: [Create Custom Build of ECharts](https://echarts.apache.org/en/tutorial.html#Create%20Custom%20Build%20of%20ECharts) please. -+ [iOS-Echarts](https://github.com/Pluto-Y/iOS-Echarts) by Pluto-Y +## Contribution -#### Java +If you wish to debug locally, or make pull requests, please refer to [contributing](https://github.com/apache/incubator-echarts/blob/master/CONTRIBUTING.md) document. -+ [ECharts-Java](http://www.oschina.net/p/echarts-java) by Liuzh_533 +## Resources -#### .NET +### Awesome ECharts -+ [EChartsSDK](https://github.com/idoku/EChartsSDK) by idoku +[https://github.com/ecomfe/awesome-echarts](https://github.com/ecomfe/awesome-echarts) -#### PHP +### Extensions -+ [Echarts-PHP](https://github.com/hisune/Echarts-PHP) by hisune ++ [Liquidfill 水球图](https://github.com/ecomfe/echarts-liquidfill) -#### Node ++ [Wordcloud 字符云](https://github.com/ecomfe/echarts-wordcloud) -+ [Node-Echarts](https://github.com/suxiaoxin/node-echarts) by suxiaoxin ++ [Baidu Map 百度地图扩展](https://github.com/apache/incubator-echarts/tree/master/extension/bmap) -## Build ++ [vue-echarts](https://github.com/ecomfe/vue-echarts) ECharts component for Vue.js -Check this tutorial [Create Custom Build of ECharts](https://ecomfe.github.io/echarts-doc/public/en/tutorial.html#Create%20Custom%20Build%20of%20ECharts) - please. ++ [echarts-stat](https://github.com/ecomfe/echarts-stat) Statistics tool for ECharts ## License @@ -171,9 +114,8 @@ ECharts is available under the Apache License V2. Please refer to [Apache Code of Conduct](https://www.apache.org/foundation/policies/conduct.html). -## Reference Paper +## Publication Deqing Li, Honghui Mei, Yi Shen, Shuang Su, Wenli Zhang, Junting Wang, Ming Zu, Wei Chen. -[ECharts: A Declarative Framework for Rapid Construction of Wed-based Visualization](https://www.sciencedirect.com/science/article/pii/S2468502X18300068). +[ECharts: A Declarative Framework for Rapid Construction of Web-based Visualization](https://www.sciencedirect.com/science/article/pii/S2468502X18300068). Visual Informatics, 2018. - diff --git a/build/rollup-plugin-ec-lang.js b/build/rollup-plugin-ec-lang.js index 837ccbea39..2ec8c6dde5 100644 --- a/build/rollup-plugin-ec-lang.js +++ b/build/rollup-plugin-ec-lang.js @@ -65,7 +65,7 @@ let getLangFileInfo = getPlugin.getLangFileInfo = function (lang) { if (lang) { if (/^[a-zA-Z]{2}$/.test(lang)) { - absolutePath = resolve(__dirname, '../', 'src/lang' + lang.toUpperCase() + '.js') + absolutePath = resolve(__dirname, '../', 'src/lang' + lang.toUpperCase() + '.js'); } else { isOuter = true; diff --git a/.eslintrc.yaml b/extension-src/.eslintrc.yaml similarity index 97% rename from .eslintrc.yaml rename to extension-src/.eslintrc.yaml index 3c0e1c30a4..76be321ba7 100644 --- a/.eslintrc.yaml +++ b/extension-src/.eslintrc.yaml @@ -1,5 +1,6 @@ parserOptions: - ecmaVersion: 3 + # If using ES Module, ecmaVersion have to be set as `2015`. + ecmaVersion: 2015 sourceType: "module" env: browser: true diff --git a/extension-src/bmap/BMapModel.js b/extension-src/bmap/BMapModel.js index 8fb263d5de..ca5cb6525a 100644 --- a/extension-src/bmap/BMapModel.js +++ b/extension-src/bmap/BMapModel.js @@ -49,6 +49,8 @@ export default echarts.extendComponentModel({ mapStyle: {}, + mapStyleV2: {}, + roam: false } }); \ No newline at end of file diff --git a/extension-src/bmap/BMapView.js b/extension-src/bmap/BMapView.js index dfd6e722ce..b69149e48c 100644 --- a/extension-src/bmap/BMapView.js +++ b/extension-src/bmap/BMapView.js @@ -87,6 +87,7 @@ export default echarts.extendComponentView({ bmap.disablePinchToZoom(); } + /* map 2.0 */ var originalStyle = bMapModel.__mapStyle; var newMapStyle = bMapModel.get('mapStyle') || {}; @@ -100,6 +101,20 @@ export default echarts.extendComponentView({ bMapModel.__mapStyle = JSON.parse(mapStyleStr); } + /* map 3.0 */ + var originalStyle2 = bMapModel.__mapStyle2; + + var newMapStyle2 = bMapModel.get('mapStyleV2') || {}; + // FIXME, Not use JSON methods + var mapStyleStr2 = JSON.stringify(newMapStyle2); + if (JSON.stringify(originalStyle2) !== mapStyleStr2) { + // FIXME May have blank tile when dragging if setMapStyle + if (Object.keys(newMapStyle2).length) { + bmap.setMapStyleV2(newMapStyle2); + } + bMapModel.__mapStyle2 = JSON.parse(mapStyleStr2); + } + rendering = false; } }); \ No newline at end of file diff --git a/extension-src/dataTool/gexf.js b/extension-src/dataTool/gexf.js index ef3d0a6b86..8883e1aa1a 100644 --- a/extension-src/dataTool/gexf.js +++ b/extension-src/dataTool/gexf.js @@ -99,7 +99,7 @@ function parseNodes(parent, attributesMap) { // z } if (vizColorDom) { - node.itemStyle.normal.color = 'rgb(' +[ + node.itemStyle.normal.color = 'rgb(' + [ getAttr(vizColorDom, 'r') | 0, getAttr(vizColorDom, 'g') | 0, getAttr(vizColorDom, 'b') | 0 @@ -130,7 +130,7 @@ function parseNodes(parent, attributesMap) { attValue = parseFloat(attValue); break; case 'boolean': - attValue = attValue.toLowerCase() == 'true'; + attValue = attValue.toLowerCase() === 'true'; break; default: } @@ -189,16 +189,17 @@ function getAttr(el, attrName) { return el.getAttribute(attrName); } -function getChildByTagName (parent, tagName) { +function getChildByTagName(parent, tagName) { var node = parent.firstChild; while (node) { if ( - node.nodeType != 1 || - node.nodeName.toLowerCase() != tagName.toLowerCase() + node.nodeType !== 1 + || node.nodeName.toLowerCase() !== tagName.toLowerCase() ) { node = node.nextSibling; - } else { + } + else { return node; } } @@ -206,11 +207,11 @@ function getChildByTagName (parent, tagName) { return null; } -function getChildrenByTagName (parent, tagName) { +function getChildrenByTagName(parent, tagName) { var node = parent.firstChild; var children = []; while (node) { - if (node.nodeName.toLowerCase() == tagName.toLowerCase()) { + if (node.nodeName.toLowerCase() === tagName.toLowerCase()) { children.push(node); } node = node.nextSibling; diff --git a/package-lock.json b/package-lock.json index cd274ebbc2..47a4c5ecf0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,6 @@ "version": "7.5.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "dev": true, "requires": { "@babel/highlight": "^7.0.0" } @@ -64,6 +63,12 @@ "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true } } }, @@ -257,7 +262,6 @@ "version": "7.5.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", - "dev": true, "requires": { "chalk": "^2.0.0", "esutils": "^2.0.2", @@ -348,6 +352,61 @@ "to-fast-properties": "^2.0.0" } }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "dependencies": { + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + } + } + }, + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "acorn-jsx": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz", + "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==" + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", @@ -355,15 +414,38 @@ "dev": true, "optional": true }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, "assert": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", @@ -373,23 +455,65 @@ "util": "0.10.3" } }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, "babylon": { "version": "7.0.0-beta.31", "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.31.tgz", "integrity": "sha512-6lm2mV3S51yEnKmQQNnswoABL1U1H1KHoCCVwdwI3hvIv+W7ya4ki7Aw4o4KxtUHjNKkK5WpZb22rrMMOcJXJQ==", "dev": true }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", "dev": true }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -418,22 +542,81 @@ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "cli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", + "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=", + "dev": true, + "requires": { + "exit": "0.1.2", + "glob": "^7.1.1" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -441,8 +624,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "commander": { "version": "2.11.0", @@ -450,10 +632,42 @@ "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", "dev": true }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", "dev": true }, "convert-source-map": { @@ -465,17 +679,53 @@ "safe-buffer": "~5.1.1" } }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, "coordtransform": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/coordtransform/-/coordtransform-2.0.2.tgz", "integrity": "sha1-Cptp0SEA7Jf2+TgaJL5RBNNOnvk=", "dev": true }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, "requires": { "ms": "^2.1.1" } @@ -483,14 +733,160 @@ "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serializer": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.1.tgz", + "integrity": "sha512-sK3ujri04WyjwQXVoK4PU3y8ula1stq10GJZpqHIUgoGZdsGzAGu65BnU3d08aTVSvO7mGPZUc0wTEDL+qGE0Q==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "engine.io": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.3.2.tgz", + "integrity": "sha512-AsaA9KG7cWPXWHp5FvHdDWY3AMWeZ8x+2pUVLcn71qE5AtAzgGbxuclOytygskw8XGmiQafTmnI9Bix3uihu2w==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "ws": "~6.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "engine.io-client": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.3.2.tgz", + "integrity": "sha512-y0CPINnhMvPuwtqXfsGuWE8BB66+B6wTtCofQDRecMQPYX3MYUZXFNKDhdrSe3EVjgOu4V3rxdeqN/Tr91IgbQ==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~6.1.0", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", "dev": true }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { "version": "1.8.0", @@ -523,29 +919,227 @@ } } }, + "eslint": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.3.0.tgz", + "integrity": "sha512-ZvZTKaqDue+N8Y9g0kp6UPZtS4FSY3qARxBs7p4f0H0iof381XHduqVerFWtK8DPtKmemqbqCFENWSQgPR/Gow==", + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.2", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.4.1", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "strip-json-comments": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==" + } + } + }, + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", + "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", + "requires": { + "eslint-visitor-keys": "^1.0.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==" + }, + "espree": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.1.tgz", + "integrity": "sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ==", + "requires": { + "acorn": "^7.0.0", + "acorn-jsx": "^5.0.2", + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "acorn": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.0.0.tgz", + "integrity": "sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ==" + } + } + }, "esprima": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.2.tgz", "integrity": "sha1-9DvlQ2CZhOrkTJM6xjNSpq818zk=", "dev": true }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "requires": { + "estraverse": "^4.1.0" + } + }, "estraverse": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.1.1.tgz", - "integrity": "sha1-9srKcokzqFDvkGYdDheYK6RxEaI=", + "integrity": "sha1-9srKcokzqFDvkGYdDheYK6RxEaI=" + }, + "estree-walker": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", + "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==", "dev": true }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", "dev": true }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", + "dev": true, + "requires": { + "punycode": "^1.3.2" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "requires": { + "flat-cache": "^2.0.1" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==" }, "fs-extra": { "version": "0.26.7", @@ -563,8 +1157,12 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" }, "glob": { "version": "7.0.0", @@ -579,11 +1177,18 @@ "path-is-absolute": "^1.0.0" } }, + "glob-parent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz", + "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==", + "requires": { + "is-glob": "^4.0.1" + } + }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "graceful-fs": { "version": "4.2.2", @@ -591,17 +1196,76 @@ "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", "dev": true }, - "has-flag": { + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", + "dev": true, + "requires": { + "domelementtype": "1", + "domhandler": "2.3", + "domutils": "1.5", + "entities": "1.0", + "readable-stream": "1.1" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + }, + "import-fresh": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", + "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", "dev": true }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -610,8 +1274,45 @@ "inherits": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } }, "is-module": { "version": "1.0.0", @@ -619,11 +1320,48 @@ "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + } + } }, "jsesc": { "version": "2.5.2", @@ -631,6 +1369,32 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, + "jshint": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.10.2.tgz", + "integrity": "sha512-e7KZgCSXMJxznE/4WULzybCMNXNAd/bf5TSrvVEq78Q/K8ZwFpmBqQeDtNiHc3l49nV4E/+YeHU/JZjSUIrLAA==", + "dev": true, + "requires": { + "cli": "~1.0.0", + "console-browserify": "1.1.x", + "exit": "0.1.x", + "htmlparser2": "3.8.x", + "lodash": "~4.17.11", + "minimatch": "~3.0.2", + "shelljs": "0.3.x", + "strip-json-comments": "1.0.x" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + }, "json5": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", @@ -662,7 +1426,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, "requires": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -671,14 +1434,41 @@ "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "magic-string": { + "version": "0.22.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "dev": true, + "requires": { + "vlq": "^0.2.2" + } + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", "dev": true }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "requires": { + "mime-db": "~1.33.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -689,26 +1479,82 @@ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", "dev": true }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1" } }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, "requires": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.4", @@ -718,24 +1564,127 @@ "wordwrap": "~1.0.0" } }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", "dev": true }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, + "path-to-regexp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", + "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==", + "dev": true + }, + "pixelmatch": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.0.2.tgz", + "integrity": "sha512-b65UpTI40rGFY8QwN6IYuCbpmwAOL6M8d6voX4F3zR99UmDqh7r2QWLxoeHOazBRgEmDUdqNVESDREqFxQS7rQ==", + "dev": true, + "requires": { + "pngjs": "^3.4.0" + } + }, + "pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "dev": true + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" + }, "resolve": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", @@ -745,6 +1694,20 @@ "path-parse": "^1.0.6" } }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -776,6 +1739,19 @@ "integrity": "sha512-7RqCBQ9iwsOBPkjYgoIaeUij606mSkDMExP0NT7QDI3bqkHYQHrQ83uoNIXwPcQm/vP2VbsUz3kiyZZ1qPlLTQ==", "dev": true }, + "rollup-plugin-commonjs": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.4.1.tgz", + "integrity": "sha512-mg+WuD+jlwoo8bJtW3Mvx7Tz6TsIdMsdhuvCnDMoyjh0oxsVgsjB/N0X984RJCWwc5IIiqNVJhXeeITcc73++A==", + "dev": true, + "requires": { + "acorn": "^5.2.1", + "estree-walker": "^0.5.0", + "magic-string": "^0.22.4", + "resolve": "^1.4.0", + "rollup-pluginutils": "^2.0.1" + } + }, "rollup-plugin-node-resolve": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.0.0.tgz", @@ -797,33 +1773,316 @@ "uglify-js": "^3.0.9" } }, + "rollup-pluginutils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz", + "integrity": "sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==", + "dev": true, + "requires": { + "estree-walker": "^0.6.1" + }, + "dependencies": { + "estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + } + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "requires": { + "is-promise": "^2.1.0" + } + }, + "rxjs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "requires": { + "tslib": "^1.9.0" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "seedrandom": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.3.tgz", + "integrity": "sha512-PJLhhxIMjlMJaiIRtqiVW061EZn3cS+waZkbFe7eCa2R3g88HbNdWmw4NTFG1w5unxd0GeNaUUxZJP7gPAzSDQ==", + "dev": true + }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "serve-handler": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.1.tgz", + "integrity": "sha512-LQPvxGia2TYqyMkHKH4jW9jx6jlQUMcWz6gJavZ3+4vsnB+SaWbYTncb9YsK5YBR6SlvyumREZJAzLw8VaFAUQ==", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "fast-url-parser": "1.1.3", + "mime-types": "2.1.18", + "minimatch": "3.0.4", + "path-is-inside": "1.0.2", + "path-to-regexp": "2.2.1", + "range-parser": "1.2.0" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "shelljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", + "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "slugify": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.3.4.tgz", + "integrity": "sha512-KP0ZYk5hJNBS8/eIjGkFDCzGQIoZ1mnfQRYS5WM3273z+fxGWXeN0fkwf2ebEweydv9tioZIHGZKoF21U07/nw==", "dev": true }, + "socket.io": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.2.0.tgz", + "integrity": "sha512-wxXrIuZ8AILcn+f1B4ez4hJTPG24iNgxBBDaJfT6MsyOhVYiTXWexGoPkd87ktJG8kQEcL/NBvRi64+9k4Kc0w==", + "dev": true, + "requires": { + "debug": "~4.1.0", + "engine.io": "~3.3.1", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.2.0", + "socket.io-parser": "~3.3.0" + } + }, + "socket.io-adapter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", + "dev": true + }, + "socket.io-client": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.2.0.tgz", + "integrity": "sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.3.1", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.3.0", + "to-array": "0.1.4" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "socket.io-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", + "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + } + } + }, + "strip-json-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", + "dev": true + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -836,11 +2095,15 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, "requires": { "prelude-ls": "~1.1.2" } @@ -869,6 +2132,21 @@ } } }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + } + } + }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", @@ -878,16 +2156,62 @@ "inherits": "2.0.1" } }, + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==" + }, + "vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "requires": { + "mkdirp": "^0.5.1" + } + }, + "ws": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", + "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", "dev": true }, "zrender": { diff --git a/package.json b/package.json index 9658efc2e4..8fdeb54849 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,17 @@ "url": "https://github.com/apache/incubator-echarts.git" }, "scripts": { + "release": "node build/build.js --release", + "build": "node build/build.js", + "watch": "node build/build.js -w", + "help": "node build/build.js --help", "prepublish": "node build/build.js --prepublish", - "test": "node build/build.js" + "test:visual": "node test/runTest/server.js", + "test": "node build/build.js", + "mktest": "node test/build/mktest.js", + "mktest:help": "node test/build/mktest.js -h", + "lint": "./node_modules/.bin/eslint src extension-src", + "lint:dist": "echo 'It might take a while. Please wait ...' && ./node_modules/.bin/jshint --config .jshintrc-dist dist/echarts.js" }, "dependencies": { "zrender": "4.1.0" @@ -33,8 +42,19 @@ "estraverse": "4.1.1", "fs-extra": "0.26.7", "glob": "7.0.0", + "open": "6.4.0", + "pixelmatch": "5.0.2", + "pngjs": "3.4.0", "rollup": "0.50.0", + "rollup-plugin-commonjs": "8.4.1", "rollup-plugin-node-resolve": "3.0.0", - "rollup-plugin-uglify": "2.0.1" + "rollup-plugin-uglify": "2.0.1", + "seedrandom": "3.0.3", + "semver": "6.3.0", + "serve-handler": "6.1.1", + "slugify": "1.3.4", + "socket.io": "2.2.0", + "jshint": "2.10.2", + "eslint": "6.3.0" } } diff --git a/src/.eslintrc.yaml b/src/.eslintrc.yaml new file mode 100644 index 0000000000..76be321ba7 --- /dev/null +++ b/src/.eslintrc.yaml @@ -0,0 +1,189 @@ +parserOptions: + # If using ES Module, ecmaVersion have to be set as `2015`. + ecmaVersion: 2015 + sourceType: "module" +env: + browser: true + node: true + es6: false +globals: + jQuery: true + Promise: true +rules: + no-console: + - 2 + - + allow: + - "warn" + - "error" + no-constant-condition: 0 + comma-dangle: 2 + no-debugger: 2 + no-dupe-keys: 2 + no-empty-character-class: 2 + no-ex-assign: 2 + no-extra-boolean-cast: 0 + no-func-assign: 2 + no-inner-declarations: 2 + no-invalid-regexp: 2 + no-negated-in-lhs: 2 + no-obj-calls: 2 + no-sparse-arrays: 2 + no-unreachable: 2 + use-isnan: 2 + valid-typeof: 2 + block-scoped-var: 0 + curly: + - 2 + - "all" + eqeqeq: + - 2 + - "allow-null" + guard-for-in: 2 + no-else-return: 0 + no-labels: + - 2 + - + allowLoop: true + no-eval: 2 + no-extend-native: 2 + no-extra-bind: 0 + no-implied-eval: 2 + no-iterator: 2 + no-irregular-whitespace: 2 + no-lone-blocks: 2 + no-loop-func: 2 + no-multi-str: 2 + no-native-reassign: 2 + no-new-wrappers: 2 + no-octal: 2 + no-octal-escape: 2 + no-proto: 2 + no-redeclare: 0 + no-self-compare: 2 + no-unneeded-ternary: 2 + no-with: 2 + radix: 2 + wrap-iife: + - 2 + - "any" + no-delete-var: 2 + no-dupe-args: 2 + no-duplicate-case: 2 + no-label-var: 2 + no-shadow-restricted-names: 2 + no-undef: 2 + no-undef-init: 2 + no-unused-vars: + - 2 + - + vars: "local" + args: "none" + no-use-before-define: 0 + brace-style: + - 2 + - "stroustrup" + - {} + comma-spacing: + - 2 + - + before: false + after: true + comma-style: + - 2 + - "last" + new-parens: 2 + no-array-constructor: 2 + no-multi-spaces: + - 2 + - + ignoreEOLComments: true + exceptions: + Property: true + no-new-object: 2 + no-spaced-func: 2 + no-trailing-spaces: 2 + no-extra-parens: + - 2 + - "functions" + no-mixed-spaces-and-tabs: 2 + one-var: + - 2 + - "never" + operator-linebreak: + - 2 + - "before" + - + overrides: + "=": "after" + quotes: + - 2 + - "single" + semi: + - 2 + - "always" + semi-spacing: 2 + keyword-spacing: 2 + key-spacing: + - 2 + - + beforeColon: false + afterColon: true + space-before-function-paren: + - 2 + - + anonymous: "always" + named: "never" + space-before-blocks: + - 2 + - "always" + computed-property-spacing: + - 2 + - "never" + space-in-parens: + - 2 + - "never" + space-unary-ops: 2 + spaced-comment: 0 + + max-nested-callbacks: + - 1 + - 5 + max-depth: + - 1 + - 6 + max-len: + - 2 + - 120 + - 4 + - + ignoreUrls: true + ignoreComments: true + max-params: + - 1 + - 15 + + space-infix-ops: 2 + dot-notation: + - 2 + - + allowKeywords: true + allowPattern: "^catch$" + + arrow-spacing: 2 + constructor-super: 2 + no-confusing-arrow: + - 2 + - + allowParens: true + no-class-assign: 2 + no-const-assign: 2 + no-dupe-class-members: 2 + no-this-before-super: 0 + no-var: 0 + no-duplicate-imports: 2 + prefer-rest-params: 0 + unicode-bom: 2 + max-statements-per-line: 2 + + no-useless-constructor: 0 \ No newline at end of file diff --git a/src/chart/bar/BarSeries.js b/src/chart/bar/BarSeries.js index 1b717a56dc..477a584b93 100644 --- a/src/chart/bar/BarSeries.js +++ b/src/chart/bar/BarSeries.js @@ -48,6 +48,11 @@ export default BaseBarSeries.extend({ progressiveThreshold = largeThreshold; } return progressiveThreshold; - } + }, + defaultOption: { + // If clipped + // Only available on cartesian2d + clip: true + } }); diff --git a/src/chart/bar/BarView.js b/src/chart/bar/BarView.js index 3d9db418fe..310ddffd1d 100644 --- a/src/chart/bar/BarView.js +++ b/src/chart/bar/BarView.js @@ -26,6 +26,7 @@ import Model from '../../model/Model'; import barItemStyle from './barItemStyle'; import Path from 'zrender/src/graphic/Path'; import {throttle} from '../../util/throttle'; +import {createClipPath} from '../helper/createClipPathFromCoordSys'; var BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'barBorderWidth']; var _eventPos = [0, 0]; @@ -93,6 +94,15 @@ export default echarts.extendChartView({ var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null; + var coordSysClipArea = coord.getArea && coord.getArea(); + + var needsClip = seriesModel.get('clip', true); + + // If there is clipPath created in large mode. Remove it. + group.removeClipPath(); + // We don't use clipPath in normal mode because we needs a perfect animation + // And don't want the label are clipped. + data.diff(oldData) .add(function (dataIndex) { if (!data.hasValue(dataIndex)) { @@ -101,6 +111,17 @@ export default echarts.extendChartView({ var itemModel = data.getItemModel(dataIndex); var layout = getLayout[coord.type](data, dataIndex, itemModel); + + if (needsClip) { + // Clip will modify the layout params. + // And return a boolean to determine if the shape are fully clipped. + var isClipped = clip[coord.type](coordSysClipArea, layout); + if (isClipped) { + group.remove(el); + return; + } + } + var el = elementCreator[coord.type]( data, dataIndex, itemModel, layout, isHorizontalOrRadial, animationModel ); @@ -123,6 +144,14 @@ export default echarts.extendChartView({ var itemModel = data.getItemModel(newIndex); var layout = getLayout[coord.type](data, newIndex, itemModel); + if (needsClip) { + var isClipped = clip[coord.type](coordSysClipArea, layout); + if (isClipped) { + group.remove(el); + return; + } + } + if (el) { graphic.updateProps(el, {shape: layout}, animationModel, newIndex); } @@ -158,6 +187,17 @@ export default echarts.extendChartView({ _renderLarge: function (seriesModel, ecModel, api) { this._clear(); createLarge(seriesModel, this.group); + + // Use clipPath in large mode. + var clipPath = seriesModel.get('clip', true) + ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) + : null; + if (clipPath) { + this.group.setClipPath(clipPath); + } + else { + this.group.removeClipPath(); + } }, _incrementalRenderLarge: function (params, seriesModel) { @@ -191,6 +231,53 @@ export default echarts.extendChartView({ }); +var mathMax = Math.max; +var mathMin = Math.min; + +var clip = { + cartesian2d: function (coordSysBoundingRect, layout) { + var signWidth = layout.width < 0 ? -1 : 1; + var signHeight = layout.height < 0 ? -1 : 1; + // Needs positive width and height + if (signWidth < 0) { + layout.x += layout.width; + layout.width = -layout.width; + } + if (signHeight < 0) { + layout.y += layout.height; + layout.height = -layout.height; + } + + var x = mathMax(layout.x, coordSysBoundingRect.x); + var x2 = mathMin(layout.x + layout.width, coordSysBoundingRect.x + coordSysBoundingRect.width); + var y = mathMax(layout.y, coordSysBoundingRect.y); + var y2 = mathMin(layout.y + layout.height, coordSysBoundingRect.y + coordSysBoundingRect.height); + + layout.x = x; + layout.y = y; + layout.width = x2 - x; + layout.height = y2 - y; + + var clipped = layout.width < 0 || layout.height < 0; + + // Reverse back + if (signWidth < 0) { + layout.x += layout.width; + layout.width = -layout.width; + } + if (signHeight < 0) { + layout.y += layout.height; + layout.height = -layout.height; + } + + return clipped; + }, + + polar: function (coordSysClipArea) { + return false; + } +}; + var elementCreator = { cartesian2d: function ( diff --git a/src/chart/candlestick/candlestickLayout.js b/src/chart/candlestick/candlestickLayout.js index 85a4970432..9cdd3d62f0 100644 --- a/src/chart/candlestick/candlestickLayout.js +++ b/src/chart/candlestick/candlestickLayout.js @@ -148,7 +148,7 @@ export default { function largeProgress(params, data) { // Structure: [sign, x, yhigh, ylow, sign, x, yhigh, ylow, ...] - var points = new LargeArr(params.count * 5); + var points = new LargeArr(params.count * 4); var offset = 0; var point; var tmpIn = []; @@ -164,7 +164,7 @@ export default { if (isNaN(axisDimVal) || isNaN(lowestVal) || isNaN(highestVal)) { points[offset++] = NaN; - offset += 4; + offset += 3; continue; } diff --git a/src/chart/custom.js b/src/chart/custom.js index 453af472f3..784e59c157 100644 --- a/src/chart/custom.js +++ b/src/chart/custom.js @@ -27,6 +27,7 @@ import DataDiffer from '../data/DataDiffer'; import SeriesModel from '../model/Series'; import Model from '../model/Model'; import ChartView from '../view/Chart'; +import {createClipPath} from './helper/createClipPathFromCoordSys'; import prepareCartesian2d from '../coord/cartesian/prepareCustom'; import prepareGeo from '../coord/geo/prepareCustom'; @@ -80,7 +81,13 @@ SeriesModel.extend({ z: 2, legendHoverLink: true, - useTransform: true + useTransform: true, + + // Custom series will not clip by default. + // Some case will use custom series to draw label + // For example https://echarts.apache.org/examples/en/editor.html?c=custom-gantt-flight + // Only works on polar and cartesian2d coordinate system. + clip: false // Cartesian coordinate system // xAxisIndex: 0, @@ -159,6 +166,17 @@ ChartView.extend({ }) .execute(); + // Do clipping + var clipPath = customSeries.get('clip', true) + ? createClipPath(customSeries.coordinateSystem, false, customSeries) + : null; + if (clipPath) { + group.setClipPath(clipPath); + } + else { + group.removeClipPath(); + } + this._data = data; }, @@ -213,6 +231,8 @@ function createEl(elOption) { var graphicType = elOption.type; var el; + // Those graphic elements are not shapes. They should not be + // overwritten by users, so do them first. if (graphicType === 'path') { var shape = elOption.shape; // Using pathRect brings convenience to users sacle svg path. @@ -237,8 +257,14 @@ function createEl(elOption) { el = new graphicUtil.Text({}); el.__customText = elOption.style.text; } + else if (graphicType === 'group') { + el = new graphicUtil.Group(); + } + else if (graphicType === 'compoundPath') { + throw new Error('"compoundPath" is not supported yet.'); + } else { - var Clz = graphicUtil[graphicType.charAt(0).toUpperCase() + graphicType.slice(1)]; + var Clz = graphicUtil.getShapeClass(graphicType); if (__DEV__) { zrUtil.assert(Clz, 'graphic type "' + graphicType + '" can not be found.'); @@ -318,19 +344,11 @@ function updateEl(el, dataIndex, elOption, animatableModel, data, isInit, isRoot // If `elOption.styleEmphasis` is `false`, remove hover style. The // logic is ensured by `graphicUtil.setElementHoverStyle`. var styleEmphasis = elOption.styleEmphasis; - var disableStyleEmphasis = styleEmphasis === false; - if (!( - // Try to escapse setting hover style for performance. - (el.__cusHasEmphStl && styleEmphasis == null) - || (!el.__cusHasEmphStl && disableStyleEmphasis) - )) { - // Should not use graphicUtil.setHoverStyle, since the styleEmphasis - // should not be share by group and its descendants. - graphicUtil.setElementHoverStyle(el, styleEmphasis); - el.__cusHasEmphStl = !disableStyleEmphasis; - } + // hoverStyle should always be set here, because if the hover style + // may already be changed, where the inner cache should be reset. + graphicUtil.setElementHoverStyle(el, styleEmphasis); if (isRoot) { - graphicUtil.setAsHighDownDispatcher(el, !disableStyleEmphasis); + graphicUtil.setAsHighDownDispatcher(el, styleEmphasis !== false); } } diff --git a/src/chart/funnel/funnelLayout.js b/src/chart/funnel/funnelLayout.js index 1d6743629b..9922a6b47f 100644 --- a/src/chart/funnel/funnelLayout.js +++ b/src/chart/funnel/funnelLayout.js @@ -104,7 +104,7 @@ function labelLayout(data) { x2 = x1 - labelLineLen; textX = x2 - 5; textAlign = 'right'; - } + } else if (labelPosition === 'right') { // Right side x1 = (points[1][0] + points[2][0]) / 2; @@ -112,7 +112,7 @@ function labelLayout(data) { x2 = x1 + labelLineLen; textX = x2 + 5; textAlign = 'left'; - } + } else if (labelPosition === 'rightTop') { // RightTop side x1 = points[1][0]; @@ -120,7 +120,7 @@ function labelLayout(data) { x2 = x1 + labelLineLen; textX = x2 + 5; textAlign = 'top'; - } + } else if (labelPosition === 'rightBottom') { // RightBottom side x1 = points[2][0]; @@ -128,7 +128,7 @@ function labelLayout(data) { x2 = x1 + labelLineLen; textX = x2 + 5; textAlign = 'bottom'; - } + } else if (labelPosition === 'leftTop') { // LeftTop side x1 = points[0][0]; @@ -136,7 +136,7 @@ function labelLayout(data) { x2 = x1 - labelLineLen; textX = x2 - 5; textAlign = 'right'; - } + } else if (labelPosition === 'leftBottom') { // LeftBottom side x1 = points[3][0]; @@ -144,7 +144,7 @@ function labelLayout(data) { x2 = x1 - labelLineLen; textX = x2 - 5; textAlign = 'right'; - } + } else { // Right side x1 = (points[1][0] + points[2][0]) / 2; diff --git a/src/chart/gauge/GaugeView.js b/src/chart/gauge/GaugeView.js index 567f72ec43..0ccd6dd706 100644 --- a/src/chart/gauge/GaugeView.js +++ b/src/chart/gauge/GaugeView.js @@ -86,7 +86,7 @@ var GaugeView = ChartView.extend({ var prevEndAngle = startAngle; var axisLineWidth = lineStyleModel.get('width'); var showAxis = axisLineModel.get('show'); - + for (var i = 0; showAxis && i < colorList.length; i++) { // Clamp var percent = Math.min(Math.max(colorList[i][0], 0), 1); diff --git a/src/chart/helper/EffectSymbol.js b/src/chart/helper/EffectSymbol.js index 80d94dade8..1f3a5e2a39 100644 --- a/src/chart/helper/EffectSymbol.js +++ b/src/chart/helper/EffectSymbol.js @@ -38,13 +38,14 @@ function normalizeSymbolSize(symbolSize) { } function updateRipplePath(rippleGroup, effectCfg) { + var color = effectCfg.rippleEffectColor || effectCfg.color; rippleGroup.eachChild(function (ripplePath) { ripplePath.attr({ z: effectCfg.z, zlevel: effectCfg.zlevel, style: { - stroke: effectCfg.brushType === 'stroke' ? effectCfg.color : null, - fill: effectCfg.brushType === 'fill' ? effectCfg.color : null + stroke: effectCfg.brushType === 'stroke' ? color : null, + fill: effectCfg.brushType === 'fill' ? color : null } }); }); @@ -81,9 +82,6 @@ effectSymbolProto.startEffectAnimation = function (effectCfg) { var rippleGroup = this.childAt(1); for (var i = 0; i < EFFECT_RIPPLE_NUMBER; i++) { - // var ripplePath = createSymbol( - // symbolType, -0.5, -0.5, 1, 1, color - // ); // If width/height are set too small (e.g., set to 1) on ios10 // and macOS Sierra, a circle stroke become a rect, no matter what // the scale is set. So we set width/height as 2. See #4136. @@ -198,6 +196,7 @@ effectSymbolProto.updateData = function (data, idx) { effectCfg.zlevel = itemModel.getShallow('zlevel') || 0; effectCfg.symbolType = symbolType; effectCfg.color = color; + effectCfg.rippleEffectColor = itemModel.get('rippleEffect.color'); this.off('mouseover').off('mouseout').off('emphasis').off('normal'); diff --git a/src/chart/helper/LargeSymbolDraw.js b/src/chart/helper/LargeSymbolDraw.js index a5ad19461b..8db5332813 100644 --- a/src/chart/helper/LargeSymbolDraw.js +++ b/src/chart/helper/LargeSymbolDraw.js @@ -35,6 +35,8 @@ var LargeSymbolPath = graphic.extendShape({ symbolProxy: null, + softClipShape: null, + buildPath: function (path, shape) { var points = shape.points; var size = shape.size; @@ -56,6 +58,9 @@ var LargeSymbolPath = graphic.extendShape({ if (isNaN(x) || isNaN(y)) { continue; } + if (this.softClipShape && !this.softClipShape.contain(x, y)) { + continue; + } symbolProxyShape.x = x - size[0] / 2; symbolProxyShape.y = y - size[1] / 2; @@ -84,6 +89,9 @@ var LargeSymbolPath = graphic.extendShape({ if (isNaN(x) || isNaN(y)) { continue; } + if (this.softClipShape && !this.softClipShape.contain(x, y)) { + continue; + } // fillRect is faster than building a rect path and draw. // And it support light globalCompositeOperation. ctx.fillRect( @@ -135,8 +143,10 @@ largeSymbolProto.isPersistent = function () { /** * Update symbols draw by new data * @param {module:echarts/data/List} data + * @param {Object} opt + * @param {Object} [opt.clipShape] */ -largeSymbolProto.updateData = function (data) { +largeSymbolProto.updateData = function (data, opt) { this.group.removeAll(); var symbolEl = new LargeSymbolPath({ rectHover: true, @@ -146,7 +156,7 @@ largeSymbolProto.updateData = function (data) { symbolEl.setShape({ points: data.getLayout('symbolPoints') }); - this._setCommon(symbolEl, data); + this._setCommon(symbolEl, data, false, opt); this.group.add(symbolEl); this._incremental = null; @@ -187,7 +197,7 @@ largeSymbolProto.incrementalPrepareUpdate = function (data) { } }; -largeSymbolProto.incrementalUpdate = function (taskParams, data) { +largeSymbolProto.incrementalUpdate = function (taskParams, data, opt) { var symbolEl; if (this._incremental) { symbolEl = new LargeSymbolPath(); @@ -207,12 +217,13 @@ largeSymbolProto.incrementalUpdate = function (taskParams, data) { symbolEl.setShape({ points: data.getLayout('symbolPoints') }); - this._setCommon(symbolEl, data, !!this._incremental); + this._setCommon(symbolEl, data, !!this._incremental, opt); }; -largeSymbolProto._setCommon = function (symbolEl, data, isIncremental) { +largeSymbolProto._setCommon = function (symbolEl, data, isIncremental, opt) { var hostModel = data.hostModel; + opt = opt || {}; // TODO // if (data.hasItemVisual.symbolSize) { // // TODO typed array? @@ -228,6 +239,7 @@ largeSymbolProto._setCommon = function (symbolEl, data, isIncremental) { symbolEl.setShape('size', (size instanceof Array) ? size : [size, size]); // } + symbolEl.softClipShape = opt.clipShape || null; // Create symbolProxy to build path for each data symbolEl.symbolProxy = createSymbol( data.getVisual('symbol'), 0, 0, 0, 0 diff --git a/src/chart/helper/createClipPathFromCoordSys.js b/src/chart/helper/createClipPathFromCoordSys.js new file mode 100644 index 0000000000..0a6fcd08a5 --- /dev/null +++ b/src/chart/helper/createClipPathFromCoordSys.js @@ -0,0 +1,100 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ +import * as graphic from '../../util/graphic'; +import {round} from '../../util/number'; + +function createGridClipPath(cartesian, hasAnimation, seriesModel) { + var rect = cartesian.getArea(); + var isHorizontal = cartesian.getBaseAxis().isHorizontal(); + + var x = rect.x; + var y = rect.y; + var width = rect.width; + var height = rect.height; + + var lineWidth = seriesModel.get('lineStyle.width') || 2; + // Expand the clip path a bit to avoid the border is clipped and looks thinner + x -= lineWidth / 2; + y -= lineWidth / 2; + width += lineWidth; + height += lineWidth; + + var clipPath = new graphic.Rect({ + shape: { + x: x, + y: y, + width: width, + height: height + } + }); + + if (hasAnimation) { + clipPath.shape[isHorizontal ? 'width' : 'height'] = 0; + graphic.initProps(clipPath, { + shape: { + width: width, + height: height + } + }, seriesModel); + } + + return clipPath; +} + +function createPolarClipPath(polar, hasAnimation, seriesModel) { + var sectorArea = polar.getArea(); + // Avoid float number rounding error for symbol on the edge of axis extent. + + var clipPath = new graphic.Sector({ + shape: { + cx: round(polar.cx, 1), + cy: round(polar.cy, 1), + r0: round(sectorArea.r0, 1), + r: round(sectorArea.r, 1), + startAngle: sectorArea.startAngle, + endAngle: sectorArea.endAngle, + clockwise: sectorArea.clockwise + } + }); + + if (hasAnimation) { + clipPath.shape.endAngle = sectorArea.startAngle; + graphic.initProps(clipPath, { + shape: { + endAngle: sectorArea.endAngle + } + }, seriesModel); + } + return clipPath; +} + +function createClipPath(coordSys, hasAnimation, seriesModel) { + if (!coordSys) { + return null; + } + else if (coordSys.type === 'polar') { + return createPolarClipPath(coordSys, hasAnimation, seriesModel); + } + else if (coordSys.type === 'cartesian2d') { + return createGridClipPath(coordSys, hasAnimation, seriesModel); + } + return null; +} + +export {createGridClipPath, createPolarClipPath, createClipPath}; \ No newline at end of file diff --git a/src/chart/line/LineSeries.js b/src/chart/line/LineSeries.js index c8abf58c59..0441d139de 100644 --- a/src/chart/line/LineSeries.js +++ b/src/chart/line/LineSeries.js @@ -51,7 +51,7 @@ export default SeriesModel.extend({ // polarIndex: 0, // If clip the overflow value - clipOverflow: true, + clip: true, // cursor: null, label: { diff --git a/src/chart/line/LineView.js b/src/chart/line/LineView.js index 501f026a14..8613fe88ec 100644 --- a/src/chart/line/LineView.js +++ b/src/chart/line/LineView.js @@ -28,8 +28,8 @@ import * as graphic from '../../util/graphic'; import * as modelUtil from '../../util/model'; import {Polyline, Polygon} from './poly'; import ChartView from '../../view/Chart'; -import {round} from '../../util/number'; import {prepareDataCoordInfo, getStackedOnPoint} from './helper'; +import {createGridClipPath, createPolarClipPath} from '../helper/createClipPathFromCoordSys'; function isPointsSame(points1, points2) { if (points1.length !== points2.length) { @@ -49,18 +49,6 @@ function getSmooth(smooth) { return typeof (smooth) === 'number' ? smooth : (smooth ? 0.5 : 0); } -function getAxisExtentWithGap(axis) { - var extent = axis.getGlobalExtent(); - if (axis.onBand) { - // Remove extra 1px to avoid line miter in clipped edge - var halfBandWidth = axis.getBandWidth() / 2 - 1; - var dir = extent[1] > extent[0] ? 1 : -1; - extent[0] += dir * halfBandWidth; - extent[1] -= dir * halfBandWidth; - } - return extent; -} - /** * @param {module:echarts/coord/cartesian/Cartesian2D|module:echarts/coord/polar/Polar} coordSys * @param {module:echarts/data/List} data @@ -80,106 +68,6 @@ function getStackedOnPoints(coordSys, data, dataCoordInfo) { return points; } -function createGridClipShape(cartesian, hasAnimation, forSymbol, seriesModel) { - var xExtent = getAxisExtentWithGap(cartesian.getAxis('x')); - var yExtent = getAxisExtentWithGap(cartesian.getAxis('y')); - var isHorizontal = cartesian.getBaseAxis().isHorizontal(); - - var x = Math.min(xExtent[0], xExtent[1]); - var y = Math.min(yExtent[0], yExtent[1]); - var width = Math.max(xExtent[0], xExtent[1]) - x; - var height = Math.max(yExtent[0], yExtent[1]) - y; - - // Avoid float number rounding error for symbol on the edge of axis extent. - // See #7913 and `test/dataZoom-clip.html`. - if (forSymbol) { - x -= 0.5; - width += 0.5; - y -= 0.5; - height += 0.5; - } - else { - var lineWidth = seriesModel.get('lineStyle.width') || 2; - // Expand clip shape to avoid clipping when line value exceeds axis - var expandSize = seriesModel.get('clipOverflow') ? lineWidth / 2 : Math.max(width, height); - if (isHorizontal) { - y -= expandSize; - height += expandSize * 2; - } - else { - x -= expandSize; - width += expandSize * 2; - } - } - - var clipPath = new graphic.Rect({ - shape: { - x: x, - y: y, - width: width, - height: height - } - }); - - if (hasAnimation) { - clipPath.shape[isHorizontal ? 'width' : 'height'] = 0; - graphic.initProps(clipPath, { - shape: { - width: width, - height: height - } - }, seriesModel); - } - - return clipPath; -} - -function createPolarClipShape(polar, hasAnimation, forSymbol, seriesModel) { - var angleAxis = polar.getAngleAxis(); - var radiusAxis = polar.getRadiusAxis(); - - var radiusExtent = radiusAxis.getExtent().slice(); - radiusExtent[0] > radiusExtent[1] && radiusExtent.reverse(); - var angleExtent = angleAxis.getExtent(); - - var RADIAN = Math.PI / 180; - - // Avoid float number rounding error for symbol on the edge of axis extent. - if (forSymbol) { - radiusExtent[0] -= 0.5; - radiusExtent[1] += 0.5; - } - - var clipPath = new graphic.Sector({ - shape: { - cx: round(polar.cx, 1), - cy: round(polar.cy, 1), - r0: round(radiusExtent[0], 1), - r: round(radiusExtent[1], 1), - startAngle: -angleExtent[0] * RADIAN, - endAngle: -angleExtent[1] * RADIAN, - clockwise: angleAxis.inverse - } - }); - - if (hasAnimation) { - clipPath.shape.endAngle = -angleExtent[0] * RADIAN; - graphic.initProps(clipPath, { - shape: { - endAngle: -angleExtent[1] * RADIAN - } - }, seriesModel); - } - - return clipPath; -} - -function createClipShape(coordSys, hasAnimation, forSymbol, seriesModel) { - return coordSys.type === 'polar' - ? createPolarClipShape(coordSys, hasAnimation, forSymbol, seriesModel) - : createGridClipShape(coordSys, hasAnimation, forSymbol, seriesModel); -} - function turnPointsIntoStep(points, coordSys, stepTurnAt) { var baseAxis = coordSys.getBaseAxis(); var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1; @@ -376,6 +264,31 @@ function canShowAllSymbolForCategory(categoryAxis, data) { return true; } +function createLineClipPath(coordSys, hasAnimation, seriesModel) { + if (coordSys.type === 'cartesian2d') { + var isHorizontal = coordSys.getBaseAxis().isHorizontal(); + var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel); + // Expand clip shape to avoid clipping when line value exceeds axis + if (!seriesModel.get('clip', true)) { + var rectShape = clipPath.shape; + var expandSize = Math.max(rectShape.width, rectShape.height); + if (isHorizontal) { + rectShape.y -= expandSize; + rectShape.height += expandSize * 2; + } + else { + rectShape.x -= expandSize; + rectShape.width += expandSize * 2; + } + } + return clipPath; + } + else { + return createPolarClipPath(coordSys, hasAnimation, seriesModel); + } + +} + export default ChartView.extend({ type: 'line', @@ -440,13 +353,29 @@ export default ChartView.extend({ // FIXME step not support polar var step = !isCoordSysPolar && seriesModel.get('step'); + var clipShapeForSymbol; + if (coordSys && coordSys.getArea) { + clipShapeForSymbol = coordSys.getArea(); + // Avoid float number rounding error for symbol on the edge of axis extent. + // See #7913 and `test/dataZoom-clip.html`. + if (clipShapeForSymbol.width != null) { + clipShapeForSymbol.x -= 0.1; + clipShapeForSymbol.y -= 0.1; + clipShapeForSymbol.width += 0.2; + clipShapeForSymbol.height += 0.2; + } + else if (clipShapeForSymbol.r0) { + clipShapeForSymbol.r0 -= 0.5; + clipShapeForSymbol.r1 += 0.5; + } + } // Initialization animation or coordinate system changed if ( !(polyline && prevCoordSys.type === coordSys.type && step === this._step) ) { showSymbol && symbolDraw.updateData(data, { isIgnore: isIgnoreFunc, - clipShape: createClipShape(coordSys, false, true, seriesModel) + clipShape: clipShapeForSymbol }); if (step) { @@ -462,7 +391,7 @@ export default ChartView.extend({ coordSys, hasAnimation ); } - lineGroup.setClipPath(createClipShape(coordSys, true, false, seriesModel)); + lineGroup.setClipPath(createLineClipPath(coordSys, true, seriesModel)); } else { if (isAreaChart && !polygon) { @@ -479,13 +408,13 @@ export default ChartView.extend({ } // Update clipPath - lineGroup.setClipPath(createClipShape(coordSys, false, false, seriesModel)); + lineGroup.setClipPath(createLineClipPath(coordSys, false, seriesModel)); // Always update, or it is wrong in the case turning on legend // because points are not changed showSymbol && symbolDraw.updateData(data, { isIgnore: isIgnoreFunc, - clipShape: createClipShape(coordSys, false, true, seriesModel) + clipShape: clipShapeForSymbol }); // Stop symbol animation and sync with line points @@ -787,11 +716,11 @@ export default ChartView.extend({ } }); - this._polyline - = this._polygon - = this._coordSys - = this._points - = this._stackedOnPoints - = this._data = null; + this._polyline = + this._polygon = + this._coordSys = + this._points = + this._stackedOnPoints = + this._data = null; } }); \ No newline at end of file diff --git a/src/chart/lines/LinesSeries.js b/src/chart/lines/LinesSeries.js index 59747bec38..047f0b6c17 100644 --- a/src/chart/lines/LinesSeries.js +++ b/src/chart/lines/LinesSeries.js @@ -316,6 +316,10 @@ var LinesSeries = SeriesModel.extend({ // polyline not support curveness, label, animation polyline: false, + // If clip the overflow. + // Available when coordinateSystem is cartesian or polar. + clip: true, + label: { show: false, position: 'end' diff --git a/src/chart/lines/LinesView.js b/src/chart/lines/LinesView.js index e742d013e0..42a249c7ee 100644 --- a/src/chart/lines/LinesView.js +++ b/src/chart/lines/LinesView.js @@ -26,6 +26,7 @@ import Polyline from '../helper/Polyline'; import EffectPolyline from '../helper/EffectPolyline'; import LargeLineDraw from '../helper/LargeLineDraw'; import linesLayout from './linesLayout'; +import {createClipPath} from '../helper/createClipPathFromCoordSys'; export default echarts.extendChartView({ @@ -76,6 +77,16 @@ export default echarts.extendChartView({ lineDraw.updateData(data); + var clipPath = seriesModel.get('clip', true) && createClipPath( + seriesModel.coordinateSystem, false, seriesModel + ); + if (clipPath) { + this.group.setClipPath(clipPath); + } + else { + this.group.removeClipPath(); + } + this._lastZlevel = zlevel; this._finished = true; diff --git a/src/chart/pie/PieSeries.js b/src/chart/pie/PieSeries.js index 63035d62d9..42a44e61f9 100644 --- a/src/chart/pie/PieSeries.js +++ b/src/chart/pie/PieSeries.js @@ -170,9 +170,12 @@ var PieSeries = echarts.extendSeriesModel({ borderWidth: 1 }, - // Animation type canbe expansion, scale + // Animation type. Valid values: expansion, scale animationType: 'expansion', + // Animation type when update. Valid values: transition, expansion + animationTypeUpdate: 'transition', + animationEasing: 'cubicOut' } }); diff --git a/src/chart/pie/PieView.js b/src/chart/pie/PieView.js index 1c06b7a8e3..69e69036a0 100644 --- a/src/chart/pie/PieView.js +++ b/src/chart/pie/PieView.js @@ -112,6 +112,8 @@ piePieceProto.updateData = function (data, idx, firstCreate) { var sectorShape = zrUtil.extend({}, layout); sectorShape.label = null; + var animationTypeUpdate = seriesModel.getShallow('animationTypeUpdate'); + if (firstCreate) { sector.setShape(sectorShape); @@ -136,9 +138,16 @@ piePieceProto.updateData = function (data, idx, firstCreate) { } else { - graphic.updateProps(sector, { - shape: sectorShape - }, seriesModel, idx); + if (animationTypeUpdate === 'expansion') { + // Sectors are set to be target shape and an overlaying clipPath is used for animation + sector.setShape(sectorShape); + } + else { + // Transition animation from the old shape + graphic.updateProps(sector, { + shape: sectorShape + }, seriesModel, idx); + } } // Update common style @@ -167,7 +176,9 @@ piePieceProto.updateData = function (data, idx, firstCreate) { seriesModel.get('animation') ); - this._updateLabel(data, idx); + // Label and text animation should be applied only for transition type animation when update + var withAnimation = !firstCreate && animationTypeUpdate === 'transition'; + this._updateLabel(data, idx, withAnimation); this.highDownOnUpdate = (itemModel.get('hoverAnimation') && seriesModel.isAnimationEnabled()) ? function (fromState, toState) { @@ -201,7 +212,7 @@ piePieceProto.updateData = function (data, idx, firstCreate) { graphic.setHoverStyle(this); }; -piePieceProto._updateLabel = function (data, idx) { +piePieceProto._updateLabel = function (data, idx, withAnimation) { var labelLine = this.childAt(1); var labelText = this.childAt(2); @@ -218,20 +229,33 @@ piePieceProto._updateLabel = function (data, idx) { return; } - graphic.updateProps(labelLine, { - shape: { - points: labelLayout.linePoints || [ - [labelLayout.x, labelLayout.y], [labelLayout.x, labelLayout.y], [labelLayout.x, labelLayout.y] - ] - } - }, seriesModel, idx); + var targetLineShape = { + points: labelLayout.linePoints || [ + [labelLayout.x, labelLayout.y], [labelLayout.x, labelLayout.y], [labelLayout.x, labelLayout.y] + ] + }; + var targetTextStyle = { + x: labelLayout.x, + y: labelLayout.y + }; + if (withAnimation) { + graphic.updateProps(labelLine, { + shape: targetLineShape + }, seriesModel, idx); + + graphic.updateProps(labelText, { + style: targetTextStyle + }, seriesModel, idx); + } + else { + labelLine.attr({ + shape: targetLineShape + }); + labelText.attr({ + style: targetTextStyle + }); + } - graphic.updateProps(labelText, { - style: { - x: labelLayout.x, - y: labelLayout.y - } - }, seriesModel, idx); labelText.attr({ rotation: labelLayout.rotation, origin: [labelLayout.x, labelLayout.y], @@ -309,6 +333,7 @@ var PieView = ChartView.extend({ var hasAnimation = ecModel.get('animation'); var isFirstRender = !oldData; var animationType = seriesModel.get('animationType'); + var animationTypeUpdate = seriesModel.get('animationTypeUpdate'); var onSectorClick = zrUtil.curry( updateDataSelected, this.uid, seriesModel, hasAnimation, api @@ -334,6 +359,12 @@ var PieView = ChartView.extend({ .update(function (newIdx, oldIdx) { var piePiece = oldData.getItemGraphicEl(oldIdx); + if (!isFirstRender && animationTypeUpdate !== 'transition') { + piePiece.eachChild(function (child) { + child.stopAnimation(true); + }); + } + piePiece.updateData(data, newIdx); piePiece.off('click'); @@ -348,9 +379,8 @@ var PieView = ChartView.extend({ .execute(); if ( - hasAnimation && isFirstRender && data.count() > 0 - // Default expansion animation - && animationType !== 'scale' + hasAnimation && data.count() > 0 + && (isFirstRender ? animationType !== 'scale' : animationTypeUpdate !== 'transition') ) { var shape = data.getItemLayout(0); for (var s = 1; isNaN(shape.startAngle) && s < data.count(); ++s) { @@ -361,7 +391,7 @@ var PieView = ChartView.extend({ var removeClipPath = zrUtil.bind(group.removeClipPath, group); group.setClipPath(this._createClipPath( - shape.cx, shape.cy, r, shape.startAngle, shape.clockwise, removeClipPath, seriesModel + shape.cx, shape.cy, r, shape.startAngle, shape.clockwise, removeClipPath, seriesModel, isFirstRender )); } else { @@ -375,7 +405,7 @@ var PieView = ChartView.extend({ dispose: function () {}, _createClipPath: function ( - cx, cy, r, startAngle, clockwise, cb, seriesModel + cx, cy, r, startAngle, clockwise, cb, seriesModel, isFirstRender ) { var clipPath = new graphic.Sector({ shape: { @@ -389,7 +419,8 @@ var PieView = ChartView.extend({ } }); - graphic.initProps(clipPath, { + var initOrUpdate = isFirstRender ? graphic.initProps : graphic.updateProps; + initOrUpdate(clipPath, { shape: { endAngle: startAngle + (clockwise ? 1 : -1) * Math.PI * 2 } diff --git a/src/chart/sankey/sankeyAction.js b/src/chart/sankey/sankeyAction.js index a9330be3c7..144e79cd24 100644 --- a/src/chart/sankey/sankeyAction.js +++ b/src/chart/sankey/sankeyAction.js @@ -22,7 +22,7 @@ import '../helper/focusNodeAdjacencyAction'; echarts.registerAction({ type: 'dragNode', - event: 'dragNode', + event: 'dragnode', // here can only use 'update' now, other value is not support in echarts. update: 'update' }, function (payload, ecModel) { diff --git a/src/chart/scatter/ScatterSeries.js b/src/chart/scatter/ScatterSeries.js index c04e7d802b..395f00a431 100644 --- a/src/chart/scatter/ScatterSeries.js +++ b/src/chart/scatter/ScatterSeries.js @@ -87,7 +87,11 @@ export default SeriesModel.extend({ itemStyle: { opacity: 0.8 // color: 各异 - } + }, + + // If clip the overflow graphics + // Works on cartesian / polar series + clip: true // progressive: null } diff --git a/src/chart/scatter/ScatterView.js b/src/chart/scatter/ScatterView.js index 2ec0b101ac..6fc7b84226 100644 --- a/src/chart/scatter/ScatterView.js +++ b/src/chart/scatter/ScatterView.js @@ -31,7 +31,14 @@ echarts.extendChartView({ var data = seriesModel.getData(); var symbolDraw = this._updateSymbolDraw(data, seriesModel); - symbolDraw.updateData(data); + + symbolDraw.updateData(data, { + // TODO + // If this parameter should be a shape or a bounding volume + // shape will be more general. + // But bounding volume like bounding rect will be much faster in the contain calculation + clipShape: this._getClipShape(seriesModel) + }); this._finished = true; }, @@ -46,7 +53,9 @@ echarts.extendChartView({ }, incrementalRender: function (taskParams, seriesModel, ecModel) { - this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData()); + this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData(), { + clipShape: this._getClipShape(seriesModel) + }); this._finished = taskParams.end === seriesModel.getData().count(); }, @@ -72,6 +81,12 @@ echarts.extendChartView({ } }, + _getClipShape: function (seriesModel) { + var coordSys = seriesModel.coordinateSystem; + var clipArea = coordSys && coordSys.getArea && coordSys.getArea(); + return seriesModel.get('clip', true) ? clipArea : null; + }, + _updateSymbolDraw: function (data, seriesModel) { var symbolDraw = this._symbolDraw; var pipelineContext = seriesModel.pipelineContext; diff --git a/src/chart/sunburst/SunburstPiece.js b/src/chart/sunburst/SunburstPiece.js index 4c920c100c..79ca4c3559 100644 --- a/src/chart/sunburst/SunburstPiece.js +++ b/src/chart/sunburst/SunburstPiece.js @@ -292,7 +292,8 @@ SunburstPieceProto._updateLabel = function (seriesModel, visualColor, state) { else if (rotate < -Math.PI / 2) { rotate += Math.PI; } - } else if (typeof rotateType === 'number') { + } + else if (typeof rotateType === 'number') { rotate = rotateType * Math.PI / 180; } label.attr('rotation', rotate); diff --git a/src/chart/sunburst/sunburstLayout.js b/src/chart/sunburst/sunburstLayout.js index 7b9be2c5c2..ae390735bc 100644 --- a/src/chart/sunburst/sunburstLayout.js +++ b/src/chart/sunburst/sunburstLayout.js @@ -21,7 +21,7 @@ import { parsePercent } from '../../util/number'; import * as zrUtil from 'zrender/src/core/util'; -var PI2 = Math.PI * 2; +// var PI2 = Math.PI * 2; var RADIAN = Math.PI / 180; export default function (seriesType, ecModel, api, payload) { @@ -74,8 +74,8 @@ export default function (seriesType, ecModel, api, payload) { var stillShowZeroSum = seriesModel.get('stillShowZeroSum'); // In the case some sector angle is smaller than minAngle - var restAngle = PI2; - var valueSumLargerThanMinAngle = 0; + // var restAngle = PI2; + // var valueSumLargerThanMinAngle = 0; var dir = clockwise ? 1 : -1; @@ -99,11 +99,11 @@ export default function (seriesType, ecModel, api, payload) { ? unitRadian : (value * unitRadian); if (angle < minAngle) { angle = minAngle; - restAngle -= minAngle; - } - else { - valueSumLargerThanMinAngle += value; + // restAngle -= minAngle; } + // else { + // valueSumLargerThanMinAngle += value; + // } endAngle = startAngle + dir * angle; diff --git a/src/chart/tree/TreeSeries.js b/src/chart/tree/TreeSeries.js index 7de3f8d297..6ec1dc2bde 100644 --- a/src/chart/tree/TreeSeries.js +++ b/src/chart/tree/TreeSeries.js @@ -128,7 +128,9 @@ export default SeriesModel.extend({ // the layout of the tree, two value can be selected, 'orthogonal' or 'radial' layout: 'orthogonal', - roam: false, // true | false | 'move' | 'scale', see module:component/helper/RoamController. + // true | false | 'move' | 'scale', see module:component/helper/RoamController. + roam: false, + // Symbol size scale ratio in roam nodeScaleRatio: 0.4, diff --git a/src/chart/tree/TreeView.js b/src/chart/tree/TreeView.js index fbfe233a65..af6df2897c 100644 --- a/src/chart/tree/TreeView.js +++ b/src/chart/tree/TreeView.js @@ -79,7 +79,7 @@ export default echarts.extendChartView({ group.attr('position', [layoutInfo.x, layoutInfo.y]); } - this._updateViewCoordSys(seriesModel); + this._updateViewCoordSys(seriesModel, layoutInfo, layout); this._updateController(seriesModel, ecModel, api); var oldData = this._data; @@ -155,14 +155,20 @@ export default echarts.extendChartView({ var min = []; var max = []; bbox.fromPoints(points, min, max); + + // If don't Store min max when collapse the root node after roam, + // the root node will disappear. + var oldMin = this._min; + var oldMax = this._max; + // If width or height is 0 if (max[0] - min[0] === 0) { - max[0] += 1; - min[0] -= 1; + min[0] = oldMin ? oldMin[0] : min[0] - 1; + max[0] = oldMax ? oldMax[0] : max[0] + 1; } if (max[1] - min[1] === 0) { - max[1] += 1; - min[1] -= 1; + min[1] = oldMin ? oldMin[1] : min[1] - 1; + max[1] = oldMax ? oldMax[1] : max[1] + 1; } var viewCoordSys = seriesModel.coordinateSystem = new View(); @@ -180,6 +186,8 @@ export default echarts.extendChartView({ }); this._viewCoordSys = viewCoordSys; + this._min = min; + this._max = max; }, _updateController: function (seriesModel, ecModel, api) { diff --git a/src/chart/tree/treeAction.js b/src/chart/tree/treeAction.js index cc20dc7210..e9dd42de30 100644 --- a/src/chart/tree/treeAction.js +++ b/src/chart/tree/treeAction.js @@ -30,7 +30,6 @@ echarts.registerAction({ var tree = seriesModel.getData().tree; var node = tree.getNodeByDataIndex(dataIndex); node.isExpand = !node.isExpand; - }); }); diff --git a/src/component/axisPointer.js b/src/component/axisPointer.js index 27ad9817cd..7877103f8c 100644 --- a/src/component/axisPointer.js +++ b/src/component/axisPointer.js @@ -51,8 +51,8 @@ echarts.registerPreprocessor(function (option) { echarts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, function (ecModel, api) { // Build axisPointerModel, mergin tooltip.axisPointer model for each axis. // allAxesInfo should be updated when setOption performed. - ecModel.getComponent('axisPointer').coordSysAxesInfo - = axisPointerModelHelper.collect(ecModel, api); + ecModel.getComponent('axisPointer').coordSysAxesInfo = + axisPointerModelHelper.collect(ecModel, api); }); // Broadcast to all views. diff --git a/src/component/axisPointer/BaseAxisPointer.js b/src/component/axisPointer/BaseAxisPointer.js index 6b206bbdfe..f97ee57562 100644 --- a/src/component/axisPointer/BaseAxisPointer.js +++ b/src/component/axisPointer/BaseAxisPointer.js @@ -128,8 +128,8 @@ BaseAxisPointer.prototype = { } this._lastGraphicKey = graphicKey; - var moveAnimation = this._moveAnimation - = this.determineAnimation(axisModel, axisPointerModel); + var moveAnimation = this._moveAnimation = + this.determineAnimation(axisModel, axisPointerModel); if (!group) { group = this._group = new graphic.Group(); diff --git a/src/component/dataZoom/AxisProxy.js b/src/component/dataZoom/AxisProxy.js index 3b003053a4..0a2256d177 100644 --- a/src/component/dataZoom/AxisProxy.js +++ b/src/component/dataZoom/AxisProxy.js @@ -298,7 +298,7 @@ AxisProxy.prototype = { // `calculateDataWindow` uses min/maxSpan. setMinMaxSpan(this); - var dataWindow = this.calculateDataWindow(dataZoomModel.option); + var dataWindow = this.calculateDataWindow(dataZoomModel.settledOption); this._valueWindow = dataWindow.valueWindow; this._percentWindow = dataWindow.percentWindow; diff --git a/src/component/dataZoom/DataZoomModel.js b/src/component/dataZoom/DataZoomModel.js index 9c5f6a52fe..4388d600fe 100644 --- a/src/component/dataZoom/DataZoomModel.js +++ b/src/component/dataZoom/DataZoomModel.js @@ -116,29 +116,55 @@ var DataZoomModel = echarts.extendComponentModel({ */ this._rangePropMode = ['percent', 'percent']; - var rawOption = retrieveRaw(option); + var inputRawOption = retrieveRawOption(option); + + /** + * Suppose a "main process" start at the point that model prepared (that is, + * model initialized or merged or method called in `action`). + * We should keep the `main process` idempotent, that is, given a set of values + * on `option`, we get the same result. + * + * But sometimes, values on `option` will be updated for providing users + * a "final calculated value" (`dataZoomProcessor` will do that). Those value + * should not be the base/input of the `main process`. + * + * So in that case we should save and keep the input of the `main process` + * separately, called `settledOption`. + * + * For example, consider the case: + * (Step_1) brush zoom the grid by `toolbox.dataZoom`, + * where the original input `option.startValue`, `option.endValue` are earsed by + * calculated value. + * (Step)2) click the legend to hide and show a series, + * where the new range is calculated by the earsed `startValue` and `endValue`, + * which brings incorrect result. + * + * @readOnly + */ + this.settledOption = inputRawOption; this.mergeDefaultAndTheme(option, ecModel); - this.doInit(rawOption); + this.doInit(inputRawOption); }, /** * @override */ mergeOption: function (newOption) { - var rawOption = retrieveRaw(newOption); + var inputRawOption = retrieveRawOption(newOption); //FIX #2591 zrUtil.merge(this.option, newOption, true); + zrUtil.merge(this.settledOption, inputRawOption, true); - this.doInit(rawOption); + this.doInit(inputRawOption); }, /** * @protected */ - doInit: function (rawOption) { + doInit: function (inputRawOption) { var thisOption = this.option; // Disable realtime view update if canvas is not supported. @@ -146,16 +172,17 @@ var DataZoomModel = echarts.extendComponentModel({ thisOption.realtime = false; } - this._setDefaultThrottle(rawOption); + this._setDefaultThrottle(inputRawOption); - updateRangeUse(this, rawOption); + updateRangeUse(this, inputRawOption); + var settledOption = this.settledOption; each([['start', 'startValue'], ['end', 'endValue']], function (names, index) { // start/end has higher priority over startValue/endValue if they // both set, but we should make chart.setOption({endValue: 1000}) // effective, rather than chart.setOption({endValue: 1000, end: null}). if (this._rangePropMode[index] === 'value') { - thisOption[names[0]] = null; + thisOption[names[0]] = settledOption[names[0]] = null; } // Otherwise do nothing and use the merge result. }, this); @@ -375,16 +402,16 @@ var DataZoomModel = echarts.extendComponentModel({ /** * @private */ - _setDefaultThrottle: function (rawOption) { + _setDefaultThrottle: function (inputRawOption) { // When first time user set throttle, auto throttle ends. - if (rawOption.hasOwnProperty('throttle')) { + if (inputRawOption.hasOwnProperty('throttle')) { this._autoThrottle = false; } if (this._autoThrottle) { var globalOption = this.ecModel.option; - this.option.throttle - = (globalOption.animation && globalOption.animationDurationUpdate > 0) - ? 100 : 20; + this.option.throttle = ( + globalOption.animation && globalOption.animationDurationUpdate > 0 + ) ? 100 : 20; } }, @@ -450,23 +477,42 @@ var DataZoomModel = echarts.extendComponentModel({ * @param {number} [opt.end] * @param {number} [opt.startValue] * @param {number} [opt.endValue] - * @param {boolean} [ignoreUpdateRangeUsg=false] */ - setRawRange: function (opt, ignoreUpdateRangeUsg) { - var option = this.option; + setRawRange: function (opt) { + var thisOption = this.option; + var settledOption = this.settledOption; each([['start', 'startValue'], ['end', 'endValue']], function (names) { - // If only one of 'start' and 'startValue' is not null/undefined, the other - // should be cleared, which enable clear the option. - // If both of them are not set, keep option with the original value, which - // enable use only set start but not set end when calling `dispatchAction`. - // The same as 'end' and 'endValue'. + // Consider the pair : + // If one has value and the other one is `null/undefined`, we both set them + // to `settledOption`. This strategy enables the feature to clear the original + // value in `settledOption` to `null/undefined`. + // But if both of them are `null/undefined`, we do not set them to `settledOption` + // and keep `settledOption` with the original value. This strategy enables users to + // only set but not set when calling + // `dispatchAction`. + // The pair is treated in the same way. if (opt[names[0]] != null || opt[names[1]] != null) { - option[names[0]] = opt[names[0]]; - option[names[1]] = opt[names[1]]; + thisOption[names[0]] = settledOption[names[0]] = opt[names[0]]; + thisOption[names[1]] = settledOption[names[1]] = opt[names[1]]; } }, this); - !ignoreUpdateRangeUsg && updateRangeUse(this, opt); + updateRangeUse(this, opt); + }, + + /** + * @public + * @param {Object} opt + * @param {number} [opt.start] + * @param {number} [opt.end] + * @param {number} [opt.startValue] + * @param {number} [opt.endValue] + */ + setCalculatedRange: function (opt) { + var option = this.option; + each(['start', 'startValue', 'end', 'endValue'], function (name) { + option[name] = opt[name]; + }); }, /** @@ -540,7 +586,12 @@ var DataZoomModel = echarts.extendComponentModel({ }); -function retrieveRaw(option) { +/** + * Retrieve the those raw params from option, which will be cached separately. + * becasue they will be overwritten by normalized/calculated values in the main + * process. + */ +function retrieveRawOption(option) { var ret = {}; each( ['start', 'end', 'startValue', 'endValue', 'throttle'], @@ -551,13 +602,13 @@ function retrieveRaw(option) { return ret; } -function updateRangeUse(dataZoomModel, rawOption) { +function updateRangeUse(dataZoomModel, inputRawOption) { var rangePropMode = dataZoomModel._rangePropMode; var rangeModeInOption = dataZoomModel.get('rangeMode'); each([['start', 'startValue'], ['end', 'endValue']], function (names, index) { - var percentSpecified = rawOption[names[0]] != null; - var valueSpecified = rawOption[names[1]] != null; + var percentSpecified = inputRawOption[names[0]] != null; + var valueSpecified = inputRawOption[names[1]] != null; if (percentSpecified && !valueSpecified) { rangePropMode[index] = 'percent'; } diff --git a/src/component/dataZoom/dataZoomProcessor.js b/src/component/dataZoom/dataZoomProcessor.js index c006b03527..cfd14068b3 100644 --- a/src/component/dataZoom/dataZoomProcessor.js +++ b/src/component/dataZoom/dataZoomProcessor.js @@ -81,12 +81,12 @@ echarts.registerProcessor({ var percentRange = axisProxy.getDataPercentWindow(); var valueRange = axisProxy.getDataValueWindow(); - dataZoomModel.setRawRange({ + dataZoomModel.setCalculatedRange({ start: percentRange[0], end: percentRange[1], startValue: valueRange[0], endValue: valueRange[1] - }, true); + }); }); } }); diff --git a/src/component/graphic.js b/src/component/graphic.js index 631dc6d3ef..e689db1bd2 100644 --- a/src/component/graphic.js +++ b/src/component/graphic.js @@ -24,6 +24,19 @@ import * as zrUtil from 'zrender/src/core/util'; import * as modelUtil from '../util/model'; import * as graphicUtil from '../util/graphic'; import * as layoutUtil from '../util/layout'; +import {parsePercent} from '../util/number'; + +var _nonShapeGraphicElements = { + + // Reserved but not supported in graphic component. + path: null, + compoundPath: null, + + // Supported in graphic component. + group: graphicUtil.Group, + image: graphicUtil.Image, + text: graphicUtil.Text +}; // ------------- // Preprocessor @@ -338,8 +351,8 @@ echarts.extendComponentView({ var el = elMap.get(id); if (el) { - el.__ecGraphicWidth = elOption.width; - el.__ecGraphicHeight = elOption.height; + el.__ecGraphicWidthOption = elOption.width; + el.__ecGraphicHeightOption = elOption.height; setEventData(el, graphicModel, elOption); } }); @@ -356,6 +369,29 @@ echarts.extendComponentView({ var elOptions = graphicModel.option.elements; var rootGroup = this.group; var elMap = this._elMap; + var apiWidth = api.getWidth(); + var apiHeight = api.getHeight(); + + // Top-down to calculate percentage width/height of group + for (var i = 0; i < elOptions.length; i++) { + var elOption = elOptions[i]; + var el = elMap.get(elOption.id); + + if (!el || !el.isGroup) { + continue; + } + var parentEl = el.parent; + var isParentRoot = parentEl === rootGroup; + // Like 'position:absolut' in css, default 0. + el.__ecGraphicWidth = parsePercent( + el.__ecGraphicWidthOption, + isParentRoot ? apiWidth : parentEl.__ecGraphicWidth + ) || 0; + el.__ecGraphicHeight = parsePercent( + el.__ecGraphicHeightOption, + isParentRoot ? apiHeight : parentEl.__ecGraphicHeight + ) || 0; + } // Bottom-up tranvese all elements (consider ec resize) to locate elements. for (var i = elOptions.length - 1; i >= 0; i--) { @@ -369,14 +405,18 @@ echarts.extendComponentView({ var parentEl = el.parent; var containerInfo = parentEl === rootGroup ? { - width: api.getWidth(), - height: api.getHeight() + width: apiWidth, + height: apiHeight } - : { // Like 'position:absolut' in css, default 0. - width: parentEl.__ecGraphicWidth || 0, - height: parentEl.__ecGraphicHeight || 0 + : { + width: parentEl.__ecGraphicWidth, + height: parentEl.__ecGraphicHeight }; + // PENDING + // Currently, when `bounding: 'all'`, the union bounding rect of the group + // does not include the rect of [0, 0, group.width, group.height], which + // is probably weird for users. Should we make a break change for it? layoutUtil.positionElement( el, elOption, containerInfo, null, {hv: elOption.hv, boundingMode: elOption.bounding} @@ -412,7 +452,11 @@ function createEl(id, targetElParent, elOption, elMap) { zrUtil.assert(graphicType, 'graphic type MUST be set'); } - var Clz = graphicUtil[graphicType.charAt(0).toUpperCase() + graphicType.slice(1)]; + var Clz = _nonShapeGraphicElements.hasOwnProperty(graphicType) + // Those graphic elements are not shapes. They should not be + // overwritten by users, so do them first. + ? _nonShapeGraphicElements[graphicType] + : graphicUtil.getShapeClass(graphicType); if (__DEV__) { zrUtil.assert(Clz, 'graphic type can not be found'); @@ -548,4 +592,4 @@ function setEventData(el, graphicModel, elOption) { if (eventData) { eventData.info = el.info; } -} \ No newline at end of file +} diff --git a/src/component/helper/MapDraw.js b/src/component/helper/MapDraw.js index 5f4d5d736f..163d3626a5 100644 --- a/src/component/helper/MapDraw.js +++ b/src/component/helper/MapDraw.js @@ -25,7 +25,7 @@ import * as graphic from '../../util/graphic'; import geoSourceManager from '../../coord/geo/geoSourceManager'; import {getUID} from '../../util/component'; -function getFixedItemStyle(model, scale) { +function getFixedItemStyle(model) { var itemStyle = model.getItemStyle(); var areaColor = model.get('areaColor'); @@ -181,20 +181,14 @@ MapDraw.prototype = { var regionsGroup = this._regionsGroup; var group = this.group; - var scale = geo.scale; - var transform = { - position: geo.position, - scale: scale - }; - - // No animation when first draw or in action - if (!regionsGroup.childAt(0) || payload) { - group.attr(transform); - } - else { - graphic.updateProps(group, transform, mapOrGeoModel); + if (geo._roamTransformable.transform) { + group.transform = geo._roamTransformable.transform.slice(); + group.decomposeTransform(); } + var scale = geo._rawTransformable.scale; + var position = geo._rawTransformable.position; + regionsGroup.removeAll(); var itemStyleAccessPath = ['itemStyle']; @@ -204,7 +198,6 @@ MapDraw.prototype = { var nameMap = zrUtil.createHashMap(); zrUtil.each(geo.regions, function (region) { - // Consider in GeoJson properties.name may be duplicated, for example, // there is multiple region named "United Kindom" or "France" (so many // colonies). And it is not appropriate to merge them in geo, which @@ -225,8 +218,8 @@ MapDraw.prototype = { var itemStyleModel = regionModel.getModel(itemStyleAccessPath); var hoverItemStyleModel = regionModel.getModel(hoverItemStyleAccessPath); - var itemStyle = getFixedItemStyle(itemStyleModel, scale); - var hoverItemStyle = getFixedItemStyle(hoverItemStyleModel, scale); + var itemStyle = getFixedItemStyle(itemStyleModel); + var hoverItemStyle = getFixedItemStyle(hoverItemStyleModel); var labelModel = regionModel.getModel(labelAccessPath); var hoverLabelModel = regionModel.getModel(hoverLabelAccessPath); @@ -245,22 +238,34 @@ MapDraw.prototype = { } } + var transformPoint = function (point) { + return [ + point[0] * scale[0] + position[0], + point[1] * scale[1] + position[1] + ]; + }; + zrUtil.each(region.geometries, function (geometry) { if (geometry.type !== 'polygon') { return; } + var exterior = []; + for (var i = 0; i < geometry.exterior.length; ++i) { + exterior.push(transformPoint(geometry.exterior[i])); + } compoundPath.shape.paths.push(new graphic.Polygon({ segmentIgnoreThreshold: 1, shape: { - points: geometry.exterior + points: exterior } })); for (var i = 0; i < (geometry.interiors ? geometry.interiors.length : 0); i++) { + var interiors = transformPoint(geometry.interiors[i]); compoundPath.shape.paths.push(new graphic.Polygon({ segmentIgnoreThreshold: 1, shape: { - points: geometry.interiors[i] + points: interiors } })); } @@ -269,6 +274,7 @@ MapDraw.prototype = { compoundPath.setStyle(itemStyle); compoundPath.style.strokeNoScale = true; compoundPath.culling = true; + // Label var showLabel = labelModel.get('show'); var hoverShowLabel = hoverLabelModel.get('show'); @@ -292,12 +298,12 @@ MapDraw.prototype = { } var textEl = new graphic.Text({ - position: region.center.slice(), + position: transformPoint(region.center.slice()), // FIXME // label rotation is not support yet in geo or regions of series-map // that has no data. The rotation will be effected by this `scale`. // So needed to change to RectText? - scale: [1 / scale[0], 1 / scale[1]], + scale: [1 / group.scale[0], 1 / group.scale[1]], z2: 10, silent: true }); @@ -433,4 +439,4 @@ MapDraw.prototype = { } }; -export default MapDraw; \ No newline at end of file +export default MapDraw; diff --git a/src/component/legend.js b/src/component/legend.js index 23cbcdc18a..47f52e324e 100644 --- a/src/component/legend.js +++ b/src/component/legend.js @@ -30,7 +30,7 @@ import legendFilter from './legend/legendFilter'; import Component from '../model/Component'; // Series Filter -echarts.registerProcessor(legendFilter); +echarts.registerProcessor(echarts.PRIORITY.PROCESSOR.SERIES_FILTER, legendFilter); Component.registerSubTypeDefaulter('legend', function () { // Default 'plain' when no type specified. diff --git a/src/component/legend/LegendModel.js b/src/component/legend/LegendModel.js index c4329590fb..ceeb39b1c6 100644 --- a/src/component/legend/LegendModel.js +++ b/src/component/legend/LegendModel.js @@ -21,6 +21,20 @@ import * as echarts from '../../echarts'; import * as zrUtil from 'zrender/src/core/util'; import Model from '../../model/Model'; import {isNameSpecified} from '../../util/model'; +import lang from '../../lang'; + +var langTitle = lang.legendSelector.title; + +var defaultSelectorOption = { + all: { + type: 'all', + title: zrUtil.clone(langTitle.all) + }, + inverse: { + type: 'inverse', + title: zrUtil.clone(langTitle.inverse) + } +}; var LegendModel = echarts.extendComponentModel({ @@ -44,10 +58,25 @@ var LegendModel = echarts.extendComponentModel({ this.mergeDefaultAndTheme(option, ecModel); option.selected = option.selected || {}; + this._updateSelector(option); }, mergeOption: function (option) { LegendModel.superCall(this, 'mergeOption', option); + this._updateSelector(option); + }, + + _updateSelector: function (option) { + var selector = option.selector; + if (selector === true) { + selector = option.selector = ['all', 'inverse']; + } + if (zrUtil.isArray(selector)) { + zrUtil.each(selector, function (item, index) { + zrUtil.isString(item) && (item = {type: item}); + selector[index] = zrUtil.merge(item, defaultSelectorOption[item.type]); + }); + } }, optionUpdated: function () { @@ -176,6 +205,27 @@ var LegendModel = echarts.extendComponentModel({ this[selected[name] ? 'unSelect' : 'select'](name); }, + allSelect: function () { + var data = this._data; + var selected = this.option.selected; + zrUtil.each(data, function (dataItem) { + selected[dataItem.get('name', true)] = true; + }); + }, + + inverseSelect: function () { + var data = this._data; + var selected = this.option.selected; + zrUtil.each(data, function (dataItem) { + var name = dataItem.get('name', true); + // Initially, default value is true + if (!selected.hasOwnProperty(name)) { + selected[name] = true; + } + selected[name] = !selected[name]; + }); + }, + /** * @param {string} name */ @@ -185,6 +235,12 @@ var LegendModel = echarts.extendComponentModel({ && zrUtil.indexOf(this._availableNames, name) >= 0; }, + getOrient: function () { + return this.get('orient') === 'vertical' + ? {index: 1, name: 'vertical'} + : {index: 0, name: 'horizontal'}; + }, + defaultOption: { // 一级层叠 zlevel: 0, @@ -219,14 +275,22 @@ var LegendModel = echarts.extendComponentModel({ // 各个item之间的间隔,单位px,默认为10, // 横向布局时为水平间隔,纵向布局时为纵向间隔 itemGap: 10, - // 图例图形宽度 + // the width of legend symbol itemWidth: 25, - // 图例图形高度 + // the height of legend symbol itemHeight: 14, - // 图例关闭时候的颜色 + // the color of unselected legend symbol inactiveColor: '#ccc', + // the borderColor of unselected legend symbol + inactiveBorderColor: '#ccc', + + itemStyle: { + // the default borderWidth of legend symbol + borderWidth: 0 + }, + textStyle: { // 图例文字颜色 color: '#333' @@ -239,6 +303,40 @@ var LegendModel = echarts.extendComponentModel({ // 图例内容(详见legend.data,数组中每一项代表一个item // data: [], + // Usage: + // selector: [{type: 'all or inverse', title: xxx}] + // or + // selector: true + // or + // selector: ['all', 'inverse'] + selector: false, + + selectorLabel: { + show: true, + borderRadius: 10, + padding: [3, 5, 3, 5], + fontSize: 12, + fontFamily: ' sans-serif', + color: '#666', + borderWidth: 1, + borderColor: '#666' + }, + + emphasis: { + selectorLabel: { + show: true, + color: '#eee', + backgroundColor: '#666' + } + }, + + // Value can be 'start' or 'end' + selectorPosition: 'auto', + + selectorItemGap: 7, + + selectorButtonGap: 10, + // Tooltip 相关配置 tooltip: { show: false diff --git a/src/component/legend/LegendView.js b/src/component/legend/LegendView.js index 0cf78d0840..3556038fb9 100644 --- a/src/component/legend/LegendView.js +++ b/src/component/legend/LegendView.js @@ -52,6 +52,12 @@ export default echarts.extendComponentView({ */ this._backgroundEl; + /** + * @private + * @type {module:zrender/container/Group} + */ + this.group.add(this._selectorGroup = new Group()); + /** * If first rendering, `contentGroup.position` is [0, 0], which * does not make sense and may cause unexepcted animation if adopted. @@ -68,6 +74,13 @@ export default echarts.extendComponentView({ return this._contentGroup; }, + /** + * @protected + */ + getSelectorGroup: function () { + return this._selectorGroup; + }, + /** * @override */ @@ -82,14 +95,21 @@ export default echarts.extendComponentView({ } var itemAlign = legendModel.get('align'); + var orient = legendModel.get('orient'); if (!itemAlign || itemAlign === 'auto') { itemAlign = ( legendModel.get('left') === 'right' - && legendModel.get('orient') === 'vertical' + && orient === 'vertical' ) ? 'right' : 'left'; } - this.renderInner(itemAlign, legendModel, ecModel, api); + var selector = legendModel.get('selector', true); + var selectorPosition = legendModel.get('selectorPosition', true); + if (selector && (!selectorPosition || selectorPosition === 'auto')) { + selectorPosition = orient === 'horizontal' ? 'end' : 'start'; + } + + this.renderInner(itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition); // Perform layout. var positionInfo = legendModel.getBoxLayoutParams(); @@ -98,7 +118,7 @@ export default echarts.extendComponentView({ var maxSize = layoutUtil.getLayoutRect(positionInfo, viewportSize, padding); - var mainRect = this.layoutInner(legendModel, itemAlign, maxSize, isFirstRender); + var mainRect = this.layoutInner(legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition); // Place mainGroup, based on the calculated `mainRect`. var layoutRect = layoutUtil.getLayoutRect( @@ -120,12 +140,13 @@ export default echarts.extendComponentView({ resetInner: function () { this.getContentGroup().removeAll(); this._backgroundEl && this.group.remove(this._backgroundEl); + this.getSelectorGroup().removeAll(); }, /** * @protected */ - renderInner: function (itemAlign, legendModel, ecModel, api) { + renderInner: function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) { var contentGroup = this.getContentGroup(); var legendDrawnMap = zrUtil.createHashMap(); var selectMode = legendModel.get('selectedMode'); @@ -158,6 +179,7 @@ export default echarts.extendComponentView({ if (seriesModel) { var data = seriesModel.getData(); var color = data.getVisual('color'); + var borderColor = data.getVisual('borderColor'); // If color is a callback function if (typeof color === 'function') { @@ -165,6 +187,12 @@ export default echarts.extendComponentView({ color = color(seriesModel.getDataParams(0)); } + // If borderColor is a callback function + if (typeof borderColor === 'function') { + // Use the first data + borderColor = borderColor(seriesModel.getDataParams(0)); + } + // Using rect symbol defaultly var legendSymbolType = data.getVisual('legendSymbol') || 'roundRect'; var symbolType = data.getVisual('symbol'); @@ -172,7 +200,7 @@ export default echarts.extendComponentView({ var itemGroup = this._createItem( name, dataIndex, itemModel, legendModel, legendSymbolType, symbolType, - itemAlign, color, + itemAlign, color, borderColor, selectMode ); @@ -198,13 +226,14 @@ export default echarts.extendComponentView({ } var color = data.getItemVisual(idx, 'color'); + var borderColor = data.getItemVisual(idx, 'borderColor'); var legendSymbolType = 'roundRect'; var itemGroup = this._createItem( name, dataIndex, itemModel, legendModel, legendSymbolType, null, - itemAlign, color, + itemAlign, color, borderColor, selectMode ); @@ -229,17 +258,63 @@ export default echarts.extendComponentView({ } } }, this); + + if (selector) { + this._createSelector(selector, legendModel, api, orient, selectorPosition); + } + }, + + _createSelector: function (selector, legendModel, api, orient, selectorPosition) { + var selectorGroup = this.getSelectorGroup(); + + each(selector, function (selectorItem) { + createSelectorButton(selectorItem); + }); + + function createSelectorButton(selectorItem) { + var type = selectorItem.type; + + var labelText = new graphic.Text({ + style: { + x: 0, + y: 0, + align: 'center', + verticalAlign: 'middle' + }, + onclick: function () { + api.dispatchAction({ + type: type === 'all' ? 'legendAllSelect' : 'legendInverseSelect' + }); + } + }); + + selectorGroup.add(labelText); + + var labelModel = legendModel.getModel('selectorLabel'); + var emphasisLabelModel = legendModel.getModel('emphasis.selectorLabel'); + + graphic.setLabelStyle( + labelText.style, labelText.hoverStyle = {}, labelModel, emphasisLabelModel, + { + defaultText: selectorItem.title, + isRectText: false + } + ); + graphic.setHoverStyle(labelText); + } }, _createItem: function ( name, dataIndex, itemModel, legendModel, legendSymbolType, symbolType, - itemAlign, color, selectMode + itemAlign, color, borderColor, selectMode ) { var itemWidth = legendModel.get('itemWidth'); var itemHeight = legendModel.get('itemHeight'); var inactiveColor = legendModel.get('inactiveColor'); + var inactiveBorderColor = legendModel.get('inactiveBorderColor'); var symbolKeepAspect = legendModel.get('symbolKeepAspect'); + var legendModelItemStyle = legendModel.getModel('itemStyle'); var isSelected = legendModel.isSelected(name); var itemGroup = new Group(); @@ -253,7 +328,7 @@ export default echarts.extendComponentView({ // Use user given icon first legendSymbolType = itemIcon || legendSymbolType; - itemGroup.add(createSymbol( + var legendSymbol = createSymbol( legendSymbolType, 0, 0, @@ -262,7 +337,13 @@ export default echarts.extendComponentView({ isSelected ? color : inactiveColor, // symbolKeepAspect default true for legend symbolKeepAspect == null ? true : symbolKeepAspect - )); + ); + itemGroup.add( + setSymbolStyle( + legendSymbol, legendSymbolType, legendModelItemStyle, + borderColor, inactiveBorderColor, isSelected + ) + ); // Compose symbols // PENDING @@ -274,8 +355,7 @@ export default echarts.extendComponentView({ if (symbolType === 'none') { symbolType = 'circle'; } - // Put symbol in the center - itemGroup.add(createSymbol( + var legendSymbolCenter = createSymbol( symbolType, (itemWidth - size) / 2, (itemHeight - size) / 2, @@ -284,7 +364,14 @@ export default echarts.extendComponentView({ isSelected ? color : inactiveColor, // symbolKeepAspect default true for legend symbolKeepAspect == null ? true : symbolKeepAspect - )); + ); + // Put symbol in the center + itemGroup.add( + setSymbolStyle( + legendSymbolCenter, symbolType, legendModelItemStyle, + borderColor, inactiveBorderColor, isSelected + ) + ); } var textX = itemAlign === 'left' ? itemWidth + 5 : -5; @@ -348,8 +435,9 @@ export default echarts.extendComponentView({ /** * @protected */ - layoutInner: function (legendModel, itemAlign, maxSize) { + layoutInner: function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) { var contentGroup = this.getContentGroup(); + var selectorGroup = this.getSelectorGroup(); // Place items in contentGroup. layoutUtil.box( @@ -361,9 +449,48 @@ export default echarts.extendComponentView({ ); var contentRect = contentGroup.getBoundingRect(); - contentGroup.attr('position', [-contentRect.x, -contentRect.y]); + var contentPos = [-contentRect.x, -contentRect.y]; + + if (selector) { + // Place buttons in selectorGroup + layoutUtil.box( + // Buttons in selectorGroup always layout horizontally + 'horizontal', + selectorGroup, + legendModel.get('selectorItemGap', true) + ); + + var selectorRect = selectorGroup.getBoundingRect(); + var selectorPos = [-selectorRect.x, -selectorRect.y]; + var selectorButtonGap = legendModel.get('selectorButtonGap', true); + + var orientIdx = legendModel.getOrient().index; + var wh = orientIdx === 0 ? 'width' : 'height'; + var hw = orientIdx === 0 ? 'height' : 'width'; + var yx = orientIdx === 0 ? 'y' : 'x'; + + if (selectorPosition === 'end') { + selectorPos[orientIdx] += contentRect[wh] + selectorButtonGap; + } + else { + contentPos[orientIdx] += selectorRect[wh] + selectorButtonGap; + } - return this.group.getBoundingRect(); + //Always align selector to content as 'middle' + selectorPos[1 - orientIdx] += contentRect[hw] / 2 - selectorRect[hw] / 2; + selectorGroup.attr('position', selectorPos); + contentGroup.attr('position', contentPos); + + var mainRect = {x: 0, y: 0}; + mainRect[wh] = contentRect[wh] + selectorButtonGap + selectorRect[wh]; + mainRect[hw] = Math.max(contentRect[hw], selectorRect[hw]); + mainRect[yx] = Math.min(0, selectorRect[yx] + selectorPos[1 - orientIdx]); + return mainRect; + } + else { + contentGroup.attr('position', contentPos); + return this.group.getBoundingRect(); + } }, /** @@ -376,6 +503,21 @@ export default echarts.extendComponentView({ }); +function setSymbolStyle(symbol, symbolType, legendModelItemStyle, borderColor, inactiveBorderColor, isSelected) { + var itemStyle; + if (symbolType !== 'line' && symbolType.indexOf('empty') < 0) { + itemStyle = legendModelItemStyle.getItemStyle(); + symbol.style.stroke = borderColor; + if (!isSelected) { + itemStyle.stroke = inactiveBorderColor; + } + } + else { + itemStyle = legendModelItemStyle.getItemStyle(['borderWidth', 'borderColor']); + } + return symbol.setStyle(itemStyle); +} + function dispatchSelectAction(name, api) { api.dispatchAction({ type: 'legendToggleSelect', diff --git a/src/component/legend/ScrollableLegendModel.js b/src/component/legend/ScrollableLegendModel.js index c2aeae90ba..bf8e713f60 100644 --- a/src/component/legend/ScrollableLegendModel.js +++ b/src/component/legend/ScrollableLegendModel.js @@ -72,12 +72,6 @@ var ScrollableLegendModel = LegendModel.extend({ ScrollableLegendModel.superCall(this, 'mergeOption', option, extraOpt); mergeAndNormalizeLayoutParams(this, this.option, option); - }, - - getOrient: function () { - return this.get('orient') === 'vertical' - ? {index: 1, name: 'vertical'} - : {index: 0, name: 'horizontal'}; } }); diff --git a/src/component/legend/ScrollableLegendView.js b/src/component/legend/ScrollableLegendView.js index a5e7cb0e43..0c68a12f6e 100644 --- a/src/component/legend/ScrollableLegendView.js +++ b/src/component/legend/ScrollableLegendView.js @@ -81,11 +81,12 @@ var ScrollableLegendView = LegendView.extend({ /** * @override */ - renderInner: function (itemAlign, legendModel, ecModel, api) { + renderInner: function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) { var me = this; // Render content items. - ScrollableLegendView.superCall(this, 'renderInner', itemAlign, legendModel, ecModel, api); + ScrollableLegendView.superCall(this, 'renderInner', itemAlign, + legendModel, ecModel, api, selector, orient, selectorPosition); var controllerGroup = this._controllerGroup; @@ -138,16 +139,59 @@ var ScrollableLegendView = LegendView.extend({ /** * @override */ - layoutInner: function (legendModel, itemAlign, maxSize, isFirstRender) { - var contentGroup = this.getContentGroup(); - var containerGroup = this._containerGroup; - var controllerGroup = this._controllerGroup; + layoutInner: function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) { + var selectorGroup = this.getSelectorGroup(); var orientIdx = legendModel.getOrient().index; var wh = WH[orientIdx]; + var xy = XY[orientIdx]; var hw = WH[1 - orientIdx]; var yx = XY[1 - orientIdx]; + selector && layoutUtil.box( + // Buttons in selectorGroup always layout horizontally + 'horizontal', + selectorGroup, + legendModel.get('selectorItemGap', true) + ); + + var selectorButtonGap = legendModel.get('selectorButtonGap', true); + var selectorRect = selectorGroup.getBoundingRect(); + var selectorPos = [-selectorRect.x, -selectorRect.y]; + + var processMaxSize = zrUtil.clone(maxSize); + selector && (processMaxSize[wh] = maxSize[wh] - selectorRect[wh] - selectorButtonGap); + + var mainRect = this._layoutContentAndController(legendModel, isFirstRender, + processMaxSize, orientIdx, wh, hw, yx + ); + + if (selector) { + if (selectorPosition === 'end') { + selectorPos[orientIdx] += mainRect[wh] + selectorButtonGap; + } + else { + var offset = selectorRect[wh] + selectorButtonGap; + selectorPos[orientIdx] -= offset; + mainRect[xy] -= offset; + } + mainRect[wh] += selectorRect[wh] + selectorButtonGap; + + selectorPos[1 - orientIdx] += mainRect[yx] + mainRect[hw] / 2 - selectorRect[hw] / 2; + mainRect[hw] = Math.max(mainRect[hw], selectorRect[hw]); + mainRect[yx] = Math.min(mainRect[yx], selectorRect[yx] + selectorPos[1 - orientIdx]); + + selectorGroup.attr('position', selectorPos); + } + + return mainRect; + }, + + _layoutContentAndController: function (legendModel, isFirstRender, maxSize, orientIdx, wh, hw, yx) { + var contentGroup = this.getContentGroup(); + var containerGroup = this._containerGroup; + var controllerGroup = this._controllerGroup; + // Place items in contentGroup. layoutUtil.box( legendModel.get('orient'), @@ -206,11 +250,12 @@ var ScrollableLegendView = LegendView.extend({ // Calculate `mainRect` and set `clipPath`. // mainRect should not be calculated by `this.group.getBoundingRect()` // for sake of the overflow. - var mainRect = this.group.getBoundingRect(); var mainRect = {x: 0, y: 0}; + // Consider content may be overflow (should be clipped). mainRect[wh] = showController ? maxSize[wh] : contentRect[wh]; mainRect[hw] = Math.max(contentRect[hw], controllerRect[hw]); + // `containerRect[yx] + containerPos[1 - orientIdx]` is 0. mainRect[yx] = Math.min(0, controllerRect[yx] + controllerPos[1 - orientIdx]); @@ -225,7 +270,7 @@ var ScrollableLegendView = LegendView.extend({ containerGroup.__rectSize = clipShape[wh]; } else { - // Do not remove or ignore controller. Keep them set as place holders. + // Do not remove or ignore controller. Keep them set as placeholders. controllerGroup.eachChild(function (child) { child.attr({invisible: true, silent: true}); }); @@ -237,7 +282,7 @@ var ScrollableLegendView = LegendView.extend({ contentGroup, {position: pageInfo.contentPosition}, // When switch from "show controller" to "not show controller", view should be - // updated immediately without animation, otherwise causes weird efffect. + // updated immediately without animation, otherwise causes weird effect. showController ? legendModel : false ); @@ -293,8 +338,8 @@ var ScrollableLegendView = LegendView.extend({ * contentPosition: Array., null when data item not found. * pageIndex: number, null when data item not found. * pageCount: number, always be a number, can be 0. - * pagePrevDataIndex: number, null when no next page. - * pageNextDataIndex: number, null when no previous page. + * pagePrevDataIndex: number, null when no previous page. + * pageNextDataIndex: number, null when no next page. * } */ _getPageInfo: function (legendModel) { diff --git a/src/component/legend/legendAction.js b/src/component/legend/legendAction.js index 05c3d33421..d95156f62c 100644 --- a/src/component/legend/legendAction.js +++ b/src/component/legend/legendAction.js @@ -33,6 +33,9 @@ function legendSelectActionHandler(methodName, payload, ecModel) { // doesn't has the item, they will assume it is selected. legendModel[isSelected ? 'select' : 'unSelect'](payload.name); } + else if (methodName === 'allSelect' || methodName === 'inverseSelect') { + legendModel[methodName](); + } else { legendModel[methodName](payload.name); isSelected = legendModel.isSelected(payload.name); @@ -55,10 +58,14 @@ function legendSelectActionHandler(methodName, payload, ecModel) { }); }); // Return the event explicitly - return { - name: payload.name, - selected: selectedMap - }; + return (methodName === 'allSelect' || methodName === 'inverseSelect') + ? { + selected: selectedMap + } + : { + name: payload.name, + selected: selectedMap + }; } /** * @event legendToggleSelect @@ -72,6 +79,16 @@ echarts.registerAction( zrUtil.curry(legendSelectActionHandler, 'toggleSelected') ); +echarts.registerAction( + 'legendAllSelect', 'legendselectall', + zrUtil.curry(legendSelectActionHandler, 'allSelect') +); + +echarts.registerAction( + 'legendInverseSelect', 'legendinverseselect', + zrUtil.curry(legendSelectActionHandler, 'inverseSelect') +); + /** * @event legendSelect * @type {Object} diff --git a/src/component/marker/MarkerModel.js b/src/component/marker/MarkerModel.js index 5cb44a113d..8c3a3140c4 100644 --- a/src/component/marker/MarkerModel.js +++ b/src/component/marker/MarkerModel.js @@ -40,7 +40,7 @@ var MarkerModel = echarts.extendComponentModel({ /** * @overrite */ - init: function (option, parentModel, ecModel, extraOpt) { + init: function (option, parentModel, ecModel) { if (__DEV__) { if (this.type === 'marker') { @@ -48,7 +48,7 @@ var MarkerModel = echarts.extendComponentModel({ } } this.mergeDefaultAndTheme(option, ecModel); - this.mergeOption(option, ecModel, extraOpt.createdBySelf, true); + this._mergeOption(option, ecModel, false, true); }, /** @@ -63,7 +63,14 @@ var MarkerModel = echarts.extendComponentModel({ return this.getShallow('animation') && hostSeries && hostSeries.isAnimationEnabled(); }, - mergeOption: function (newOpt, ecModel, createdBySelf, isInit) { + /** + * @overrite + */ + mergeOption: function (newOpt, ecModel) { + this._mergeOption(newOpt, ecModel, false, false); + }, + + _mergeOption: function (newOpt, ecModel, createdBySelf, isInit) { var MarkerModel = this.constructor; var modelPropName = this.mainType + 'Model'; if (!createdBySelf) { @@ -107,7 +114,7 @@ var MarkerModel = echarts.extendComponentModel({ markerModel.__hostSeries = seriesModel; } else { - markerModel.mergeOption(markerOpt, ecModel, true); + markerModel._mergeOption(markerOpt, ecModel, true); } seriesModel[modelPropName] = markerModel; }, this); diff --git a/src/component/toolbox/ToolboxView.js b/src/component/toolbox/ToolboxView.js index 78d21395ad..35c3fc388f 100644 --- a/src/component/toolbox/ToolboxView.js +++ b/src/component/toolbox/ToolboxView.js @@ -185,7 +185,8 @@ export default echarts.extendComponentView({ path.setStyle({ text: titles[iconName], textPosition: iconStyleEmphasisModel.get('textPosition') || 'bottom', - textFill: iconStyleEmphasisModel.get('textFill') || hoverStyle.fill || hoverStyle.stroke || '#000', + textFill: iconStyleEmphasisModel.get('textFill') + || hoverStyle.fill || hoverStyle.stroke || '#000', textAlign: iconStyleEmphasisModel.get('textAlign') || 'center', textBackgroundColor: iconStyleEmphasisModel.get('textBackgroundColor'), textBorderRadius: iconStyleEmphasisModel.get('textBorderRadius'), diff --git a/src/component/toolbox/feature/DataZoom.js b/src/component/toolbox/feature/DataZoom.js index 84a9170178..2ef98f87dc 100644 --- a/src/component/toolbox/feature/DataZoom.js +++ b/src/component/toolbox/feature/DataZoom.js @@ -54,6 +54,7 @@ function DataZoom(model, ecModel, api) { DataZoom.defaultOption = { show: true, + filterMode: 'filter', // Icon group icon: { zoom: 'M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1', @@ -302,6 +303,8 @@ echarts.registerPreprocessor(function (option) { var newOpt = { type: 'select', $fromToolbox: true, + // Default to be filter + filterMode: dataZoomOpt.filterMode || 'filter', // Id for merge mapping. id: DATA_ZOOM_ID_BASE + axisName + axisIndex }; diff --git a/src/coord/cartesian/Cartesian2D.js b/src/coord/cartesian/Cartesian2D.js index 186b6039fd..55ae631914 100644 --- a/src/coord/cartesian/Cartesian2D.js +++ b/src/coord/cartesian/Cartesian2D.js @@ -19,8 +19,22 @@ import * as zrUtil from 'zrender/src/core/util'; +import BoundingRect from 'zrender/src/core/BoundingRect'; import Cartesian from './Cartesian'; +// A helper function to calculate extent of axis. +function getAxisExtentWithGap(axis) { + var extent = axis.getGlobalExtent(); + if (axis.onBand) { + // Remove extra 1px to avoid line miter in clipped edge + var halfBandWidth = axis.getBandWidth() / 2 - 1; + var dir = extent[1] > extent[0] ? 1 : -1; + extent[0] += dir * halfBandWidth; + extent[1] -= dir * halfBandWidth; + } + return extent; +} + function Cartesian2D(name) { Cartesian.call(this, name); @@ -130,6 +144,23 @@ Cartesian2D.prototype = { */ getOtherAxis: function (axis) { return this.getAxis(axis.dim === 'x' ? 'y' : 'x'); + }, + + /** + * Get rect area of cartesian. + * Area will have a contain function to determine if a point is in the coordinate system. + * @return {BoundingRect} + */ + getArea: function () { + var xExtent = this.getAxis('x').getGlobalExtent(); + var yExtent = this.getAxis('y').getGlobalExtent(); + var x = Math.min(xExtent[0], xExtent[1]); + var y = Math.min(yExtent[0], yExtent[1]); + var width = Math.max(xExtent[0], xExtent[1]) - x; + var height = Math.max(yExtent[0], yExtent[1]) - y; + + var rect = new BoundingRect(x, y, width, height); + return rect; } }; diff --git a/src/coord/geo/GeoModel.js b/src/coord/geo/GeoModel.js index fad997706c..96a672eea0 100644 --- a/src/coord/geo/GeoModel.js +++ b/src/coord/geo/GeoModel.js @@ -148,7 +148,11 @@ var GeoModel = ComponentModel.extend({ */ getFormattedLabel: function (name, status) { var regionModel = this.getRegionModel(name); - var formatter = regionModel.get('label.' + status + '.formatter'); + var formatter = regionModel.get('label' + + (status === 'normal' + ? '.' + : status + '.') + + 'formatter'); var params = { name: name }; diff --git a/src/coord/polar/Polar.js b/src/coord/polar/Polar.js index e5391da10d..5e21ac7545 100644 --- a/src/coord/polar/Polar.js +++ b/src/coord/polar/Polar.js @@ -254,6 +254,44 @@ Polar.prototype = { var y = -Math.sin(radian) * radius + this.cy; return [x, y]; + }, + + /** + * Get ring area of cartesian. + * Area will have a contain function to determine if a point is in the coordinate system. + * @return {Ring} + */ + getArea: function () { + + var angleAxis = this.getAngleAxis(); + var radiusAxis = this.getRadiusAxis(); + + var radiusExtent = radiusAxis.getExtent().slice(); + radiusExtent[0] > radiusExtent[1] && radiusExtent.reverse(); + var angleExtent = angleAxis.getExtent(); + + var RADIAN = Math.PI / 180; + + return { + cx: this.cx, + cy: this.cy, + r0: radiusExtent[0], + r: radiusExtent[1], + startAngle: -angleExtent[0] * RADIAN, + endAngle: -angleExtent[1] * RADIAN, + clockwise: angleAxis.inverse, + contain: function (x, y) { + // It's a ring shape. + // Start angle and end angle don't matter + var dx = x - this.cx; + var dy = y - this.cy; + var d2 = dx * dx + dy * dy; + var r = this.r; + var r0 = this.r0; + + return d2 <= r * r && d2 >= r0 * r0; + } + }; } }; diff --git a/src/coord/radar/Radar.js b/src/coord/radar/Radar.js index be308cabd4..01234b1ff4 100644 --- a/src/coord/radar/Radar.js +++ b/src/coord/radar/Radar.js @@ -120,7 +120,7 @@ Radar.prototype.pointToData = function (pt) { } } - return [closestAxisIdx, +(closestAxis && closestAxis.coodToData(radius))]; + return [closestAxisIdx, +(closestAxis && closestAxis.coordToData(radius))]; }; Radar.prototype.resize = function (radarModel, api) { diff --git a/src/coord/single/singleAxisHelper.js b/src/coord/single/singleAxisHelper.js index 60ac90b484..fa44fda8f5 100644 --- a/src/coord/single/singleAxisHelper.js +++ b/src/coord/single/singleAxisHelper.js @@ -57,9 +57,8 @@ export function layout(axisModel, opt) { var directionMap = {top: -1, bottom: 1, right: 1, left: -1}; - layout.labelDirection = layout.tickDirection - = layout.nameDirection - = directionMap[axisPosition]; + layout.labelDirection = layout.tickDirection = + layout.nameDirection = directionMap[axisPosition]; if (axisModel.get('axisTick.inside')) { layout.tickDirection = -layout.tickDirection; diff --git a/src/data/helper/completeDimensions.js b/src/data/helper/completeDimensions.js index 0034094f81..7bdddd95f3 100644 --- a/src/data/helper/completeDimensions.js +++ b/src/data/helper/completeDimensions.js @@ -153,8 +153,8 @@ function completeDimensions(sysDims, source, opt) { // `coordDimIndex` should not be set directly. sysDimItemDimsDef = sysDimItem.dimsDef; sysDimItemOtherDims = sysDimItem.otherDims; - sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex - = sysDimItem.dimsDef = sysDimItem.otherDims = null; + sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex = + sysDimItem.dimsDef = sysDimItem.otherDims = null; } var dataDims = encodeDef.get(coordDim); diff --git a/src/echarts.js b/src/echarts.js index 472abf072a..b33ef6625b 100644 --- a/src/echarts.js +++ b/src/echarts.js @@ -60,6 +60,8 @@ export var dependencies = { var TEST_FRAME_REMAIN_TIME = 1; var PRIORITY_PROCESSOR_FILTER = 1000; +var PRIORITY_PROCESSOR_SERIES_FILTER = 800; +var PRIORITY_PROCESSOR_DATASTACK = 900; var PRIORITY_PROCESSOR_STATISTIC = 5000; var PRIORITY_VISUAL_LAYOUT = 1000; @@ -75,6 +77,7 @@ var PRIORITY_VISUAL_BRUSH = 5000; export var PRIORITY = { PROCESSOR: { FILTER: PRIORITY_PROCESSOR_FILTER, + SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER, STATISTIC: PRIORITY_PROCESSOR_STATISTIC }, VISUAL: { @@ -98,8 +101,13 @@ var OPTION_UPDATED = '__optionUpdated'; var ACTION_REG = /^[a-zA-Z0-9_]+$/; -function createRegisterEventWithLowercaseName(method) { +function createRegisterEventWithLowercaseName(method, ignoreDisposed) { return function (eventName, handler, context) { + if (!ignoreDisposed && this._disposed) { + disposedWarning(this.id); + return; + } + // Event name is all lowercase eventName = eventName && eventName.toLowerCase(); Eventful.prototype[method].call(this, eventName, handler, context); @@ -112,9 +120,9 @@ function createRegisterEventWithLowercaseName(method) { function MessageCenter() { Eventful.call(this); } -MessageCenter.prototype.on = createRegisterEventWithLowercaseName('on'); -MessageCenter.prototype.off = createRegisterEventWithLowercaseName('off'); -MessageCenter.prototype.one = createRegisterEventWithLowercaseName('one'); +MessageCenter.prototype.on = createRegisterEventWithLowercaseName('on', true); +MessageCenter.prototype.off = createRegisterEventWithLowercaseName('off', true); +MessageCenter.prototype.one = createRegisterEventWithLowercaseName('one', true); zrUtil.mixin(MessageCenter, Eventful); /** @@ -350,6 +358,10 @@ echartsProto.setOption = function (option, notMerge, lazyUpdate) { if (__DEV__) { assert(!this[IN_MAIN_PROCESS], '`setOption` should not be called during main process.'); } + if (this._disposed) { + disposedWarning(this.id); + return; + } var silent; if (isObject(notMerge)) { @@ -485,6 +497,11 @@ echartsProto.getSvgDataUrl = function () { * @param {string} [opts.excludeComponents] */ echartsProto.getDataURL = function (opts) { + if (this._disposed) { + disposedWarning(this.id); + return; + } + opts = opts || {}; var excludeComponents = opts.excludeComponents; var ecModel = this._model; @@ -525,6 +542,11 @@ echartsProto.getDataURL = function (opts) { * @param {string} [opts.backgroundColor] */ echartsProto.getConnectedDataURL = function (opts) { + if (this._disposed) { + disposedWarning(this.id); + return; + } + if (!env.canvasSupported) { return; } @@ -644,6 +666,11 @@ echartsProto.convertToPixel = zrUtil.curry(doConvertPixel, 'convertToPixel'); echartsProto.convertFromPixel = zrUtil.curry(doConvertPixel, 'convertFromPixel'); function doConvertPixel(methodName, finder, value) { + if (this._disposed) { + disposedWarning(this.id); + return; + } + var ecModel = this._model; var coordSysList = this._coordSysMgr.getCoordinateSystems(); var result; @@ -684,6 +711,11 @@ function doConvertPixel(methodName, finder, value) { * @return {boolean} result */ echartsProto.containPixel = function (finder, value) { + if (this._disposed) { + disposedWarning(this.id); + return; + } + var ecModel = this._model; var result; @@ -1056,6 +1088,10 @@ echartsProto.resize = function (opts) { if (__DEV__) { assert(!this[IN_MAIN_PROCESS], '`resize` should not be called during main process.'); } + if (this._disposed) { + disposedWarning(this.id); + return; + } this._zr.resize(opts); @@ -1098,6 +1134,11 @@ function updateStreamModes(ecIns, ecModel) { * @param {Object} [cfg] */ echartsProto.showLoading = function (name, cfg) { + if (this._disposed) { + disposedWarning(this.id); + return; + } + if (isObject(name)) { cfg = name; name = ''; @@ -1122,6 +1163,11 @@ echartsProto.showLoading = function (name, cfg) { * Hide loading effect */ echartsProto.hideLoading = function () { + if (this._disposed) { + disposedWarning(this.id); + return; + } + this._loadingFX && this._zr.remove(this._loadingFX); this._loadingFX = null; }; @@ -1145,10 +1191,15 @@ echartsProto.makeActionFromEvent = function (eventObj) { * @param {boolean} [opt.flush=undefined] * true: Flush immediately, and then pixel in canvas can be fetched * immediately. Caution: it might affect performance. - * false: Not not flush. + * false: Not flush. * undefined: Auto decide whether perform flush. */ echartsProto.dispatchAction = function (payload, opt) { + if (this._disposed) { + disposedWarning(this.id); + return; + } + if (!isObject(opt)) { opt = {silent: !!opt}; } @@ -1317,6 +1368,11 @@ function bindRenderedEvent(zr, ecIns) { * @param {Array|TypedArray} params.data */ echartsProto.appendData = function (params) { + if (this._disposed) { + disposedWarning(this.id); + return; + } + var seriesIndex = params.seriesIndex; var ecModel = this.getModel(); var seriesModel = ecModel.getSeriesByIndex(seriesIndex); @@ -1342,9 +1398,9 @@ echartsProto.appendData = function (params) { * Register event * @method */ -echartsProto.on = createRegisterEventWithLowercaseName('on'); -echartsProto.off = createRegisterEventWithLowercaseName('off'); -echartsProto.one = createRegisterEventWithLowercaseName('one'); +echartsProto.on = createRegisterEventWithLowercaseName('on', false); +echartsProto.off = createRegisterEventWithLowercaseName('off', false); +echartsProto.one = createRegisterEventWithLowercaseName('one', false); /** * Prepare view instances of charts and components @@ -1622,6 +1678,10 @@ echartsProto.isDisposed = function () { * Clear */ echartsProto.clear = function () { + if (this._disposed) { + disposedWarning(this.id); + return; + } this.setOption({ series: [] }, true); }; @@ -1630,9 +1690,7 @@ echartsProto.clear = function () { */ echartsProto.dispose = function () { if (this._disposed) { - if (__DEV__) { - console.warn('Instance ' + this.id + ' has been disposed'); - } + disposedWarning(this.id); return; } this._disposed = true; @@ -1657,6 +1715,12 @@ echartsProto.dispose = function () { zrUtil.mixin(ECharts, Eventful); +function disposedWarning(id) { + if (__DEV__) { + console.warn('Instance ' + id + ' has been disposed'); + } +} + function updateHoverLayerStatus(ecIns, ecModel) { var zr = ecIns._zr; var storage = zr.storage; @@ -2006,9 +2070,9 @@ export function init(dom, theme, opts) { ) ) { console.warn('Can\'t get DOM width or height. Please check ' - + 'dom.clientWidth and dom.clientHeight. They should not be 0.' - + 'For example, you may need to call this in the callback ' - + 'of window.onload.'); + + 'dom.clientWidth and dom.clientHeight. They should not be 0.' + + 'For example, you may need to call this in the callback ' + + 'of window.onload.'); } } @@ -2359,7 +2423,7 @@ export function getMap(mapName) { registerVisual(PRIORITY_VISUAL_GLOBAL, seriesColor); registerPreprocessor(backwardCompat); -registerProcessor(PRIORITY_PROCESSOR_STATISTIC, dataStack); +registerProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack); registerLoading('default', loadingDefault); // Default actions diff --git a/src/export.js b/src/export.js index dded75c774..6ddd62eccf 100644 --- a/src/export.js +++ b/src/export.js @@ -71,6 +71,7 @@ zrUtil.each( 'setHoverStyle', 'setLabelStyle', 'setTextStyle', 'setText', 'getFont', 'updateProps', 'initProps', 'getTransform', 'clipPointsByRect', 'clipRectByRect', + 'registerShape', 'getShapeClass', 'Group', 'Image', 'Text', diff --git a/src/lang.js b/src/lang.js index 7115dfc630..778f93d119 100644 --- a/src/lang.js +++ b/src/lang.js @@ -19,6 +19,12 @@ export default { + legendSelector: { + title: { + all: '全选', + inverse: '反选' + } + }, toolbox: { brush: { title: { diff --git a/src/langEN.js b/src/langEN.js index f55cf7a298..c904a1165e 100644 --- a/src/langEN.js +++ b/src/langEN.js @@ -19,6 +19,12 @@ export default { + legendSelector: { + title: { + all: 'All', + inverse: 'Inv' + } + }, toolbox: { brush: { title: { diff --git a/src/layout/barGrid.js b/src/layout/barGrid.js index 94d8333029..5d211d814c 100644 --- a/src/layout/barGrid.js +++ b/src/layout/barGrid.js @@ -431,21 +431,5 @@ function isInLargeMode(seriesModel) { // See cases in `test/bar-start.html` and `#7412`, `#8747`. function getValueAxisStart(baseAxis, valueAxis, stacked) { - var extent = valueAxis.getGlobalExtent(); - var min; - var max; - if (extent[0] > extent[1]) { - min = extent[1]; - max = extent[0]; - } - else { - min = extent[0]; - max = extent[1]; - } - - var valueStart = valueAxis.toGlobalCoord(valueAxis.dataToCoord(0)); - valueStart < min && (valueStart = min); - valueStart > max && (valueStart = max); - - return valueStart; + return valueAxis.toGlobalCoord(valueAxis.dataToCoord(0)); } diff --git a/src/layout/barPolar.js b/src/layout/barPolar.js index a5536ee6aa..88d7641a97 100644 --- a/src/layout/barPolar.js +++ b/src/layout/barPolar.js @@ -63,8 +63,7 @@ function barLayoutPolar(seriesType, ecModel, api) { var axisKey = getAxisKey(polar, baseAxis); var stackId = getSeriesStackId(seriesModel); - var columnLayoutInfo - = barWidthAndOffset[axisKey][stackId]; + var columnLayoutInfo = barWidthAndOffset[axisKey][stackId]; var columnOffset = columnLayoutInfo.offset; var columnWidth = columnLayoutInfo.width; var valueAxis = polar.getOtherAxis(baseAxis); diff --git a/src/model/Global.js b/src/model/Global.js index a8900e4e63..d33fc8522e 100644 --- a/src/model/Global.js +++ b/src/model/Global.js @@ -373,8 +373,8 @@ var GlobalModel = Model.extend({ * {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}} * ); * var result = findComponents( - * {mainType: 'series'}, - * function (model, index) {...} + * {mainType: 'series', + * filter: function (model, index) {...}} * ); * // result like [component0, componnet1, ...] * diff --git a/src/model/Series.js b/src/model/Series.js index 395a096560..8b090e6b93 100644 --- a/src/model/Series.js +++ b/src/model/Series.js @@ -73,6 +73,11 @@ var SeriesModel = ComponentModel.extend({ */ visualColorAccessPath: 'itemStyle.color', + /** + * Access path of borderColor for visual + */ + visualBorderColorAccessPath: 'itemStyle.borderColor', + /** * Support merge layout params. * Only support 'box' now (left/right/top/bottom/width/height). diff --git a/src/model/mixin/dataFormat.js b/src/model/mixin/dataFormat.js index 1d10e6e55d..64d4643092 100644 --- a/src/model/mixin/dataFormat.js +++ b/src/model/mixin/dataFormat.js @@ -38,6 +38,7 @@ export default { var name = data.getName(dataIndex); var itemOpt = data.getRawDataItem(dataIndex); var color = data.getItemVisual(dataIndex, 'color'); + var borderColor = data.getItemVisual(dataIndex, 'borderColor'); var tooltipModel = this.ecModel.getComponent('tooltip'); var renderModeOption = tooltipModel && tooltipModel.get('renderMode'); var renderMode = getTooltipRenderMode(renderModeOption); @@ -59,6 +60,7 @@ export default { dataType: dataType, value: rawValue, color: color, + borderColor: borderColor, dimensionNames: userOutput ? userOutput.dimensionNames : null, encode: userOutput ? userOutput.encode : null, marker: getTooltipMarker({ diff --git a/src/model/mixin/lineStyle.js b/src/model/mixin/lineStyle.js index 1889875554..99b3f7cf0f 100644 --- a/src/model/mixin/lineStyle.js +++ b/src/model/mixin/lineStyle.js @@ -34,7 +34,7 @@ var getLineStyle = makeStyleMapper( export default { getLineStyle: function (excludes) { var style = getLineStyle(this, excludes); - // Always set lineDash whether dashed, otherwise we can not + // Always set lineDash whether dashed, otherwise we can not // erase the previous style when assigning to el.style. style.lineDash = this.getLineDash(style.lineWidth); return style; @@ -47,15 +47,15 @@ export default { var lineType = this.get('type'); var dotSize = Math.max(lineWidth, 2); var dashSize = lineWidth * 4; - return (lineType === 'solid' || lineType == null) - // Use `false` but not `null` for the solid line here, because `null` might be - // ignored when assigning to `el.style`. e.g., when setting `lineStyle.type` as - // `'dashed'` and `emphasis.lineStyle.type` as `'solid'` in graph series, the - // `lineDash` gotten form the latter one is not able to erase that from the former + return (lineType === 'solid' || lineType == null) + // Use `false` but not `null` for the solid line here, because `null` might be + // ignored when assigning to `el.style`. e.g., when setting `lineStyle.type` as + // `'dashed'` and `emphasis.lineStyle.type` as `'solid'` in graph series, the + // `lineDash` gotten form the latter one is not able to erase that from the former // one if using `null` here according to the emhpsis strategy in `util/graphic.js`. ? false - : lineType === 'dashed' - ? [dashSize, dashSize] + : lineType === 'dashed' + ? [dashSize, dashSize] : [dotSize, dotSize]; } }; \ No newline at end of file diff --git a/src/preprocessor/backwardCompat.js b/src/preprocessor/backwardCompat.js index 249c0f340f..50f09e8ee0 100644 --- a/src/preprocessor/backwardCompat.js +++ b/src/preprocessor/backwardCompat.js @@ -80,12 +80,17 @@ export default function (option, isTheme) { var seriesType = seriesOpt.type; - if (seriesType === 'pie' || seriesType === 'gauge') { + if (seriesType === 'line') { + if (seriesOpt.clipOverflow != null) { + seriesOpt.clip = seriesOpt.clipOverflow; + } + } + else if (seriesType === 'pie' || seriesType === 'gauge') { if (seriesOpt.clockWise != null) { seriesOpt.clockwise = seriesOpt.clockWise; } } - if (seriesType === 'gauge') { + else if (seriesType === 'gauge') { var pointerColor = get(seriesOpt, 'pointer.color'); pointerColor != null && set(seriesOpt, 'itemStyle.color', pointerColor); diff --git a/src/processor/dataStack.js b/src/processor/dataStack.js index 22b92020ae..360dd218fb 100644 --- a/src/processor/dataStack.js +++ b/src/processor/dataStack.js @@ -23,7 +23,7 @@ import {createHashMap, each} from 'zrender/src/core/util'; // data processing stage is blocked in stream. // See // (2) Only register once when import repeatly. -// Should be executed before after series filtered and before stack calculation. +// Should be executed after series filtered and before stack calculation. export default function (ecModel) { var stackInfoMap = createHashMap(); ecModel.eachSeries(function (seriesModel) { diff --git a/src/util/graphic.js b/src/util/graphic.js index def7e5069b..0ca633d3f1 100644 --- a/src/util/graphic.js +++ b/src/util/graphic.js @@ -65,6 +65,8 @@ var NORMAL = 'normal'; var _highlightNextDigit = 1; var _highlightKeyMap = {}; +var _customShapeMap = {}; + /** * Extend shape with parameters @@ -80,6 +82,53 @@ export function extendPath(pathData, opts) { return pathTool.extendFromString(pathData, opts); } +/** + * Register a user defined shape. + * The shape class can be fetched by `getShapeClass` + * This method will not overwrite the built-in shapes. + * The shape can be used in `custom series` and + * `graphic component` by declaring `{type: name}`. + * + * @param {string} name + * @param {Object} ShapeClass Can be generated by `extendShape`. + */ +export function registerShape(name, ShapeClass) { + _customShapeMap[name] = ShapeClass; +} + +/** + * Find shape class registered by `registerShape`. Usually used in + * fetching user defined shape. + * + * [Caution]: + * (1) This method **MUST NOT be used inside echarts !!!**, unless it is prepared + * to use user registered shapes. + * Because the built-in shape (see `getBuiltInShape`) will be registered by + * `registerShape` by default. That enables users to get both built-in + * shapes as well as the shapes belonging to themsleves. But users can overwrite + * the built-in shapes by using names like 'circle', 'rect' via calling + * `registerShape`. So the echarts inner featrues should not fetch shapes from here + * in case that it is overwritten by users, except that some features, like + * `custom series`, `graphic component`, do it deliberately. + * + * (2) In the features like `custom series`, `graphic component`, the user input + * `{tpye: 'xxx'}` does not only specify shapes but also specify other graphic + * elements like `'group'`, `'text'`, `'image'` or event `'path'`. Those names + * are reserved names, that is, if some user register a shape named `'image'`, + * the shape will not be used. If we intending to add some more reserved names + * in feature, that might bring break changes (disable some existing user shape + * names). But that case probably rearly happen. So we dont make more mechanism + * to resolve this issue here. + * + * @param {string} name + * @return {Object} The shape class. If not found, return nothing. + */ +export function getShapeClass(name) { + if (_customShapeMap.hasOwnProperty(name)) { + return _customShapeMap[name]; + } +} + /** * Create a path element from path data string * @param {string} pathData @@ -281,14 +330,14 @@ function singleEnterEmphasis(el) { return; } - var useHoverLayer = el.useHoverLayer; - el.__highlighted = useHoverLayer ? 'layer' : 'plain'; - var zr = el.__zr; - if (el.isGroup || (!zr && useHoverLayer)) { + if (el.isGroup || (!zr && el.useHoverLayer)) { return; } + var useHoverLayer = el.useHoverLayer && zr.painter.type === 'canvas'; + el.__highlighted = useHoverLayer ? 'layer' : 'plain'; + var elTarget = el; var targetStyle = el.style; @@ -767,11 +816,18 @@ function setTextStyleCommon(textStyle, textStyleModel, opt, isEmphasis) { opt = opt || EMPTY_OBJ; if (opt.isRectText) { - var textPosition = textStyleModel.getShallow('position') - || (isEmphasis ? null : 'inside'); - // 'outside' is not a valid zr textPostion value, but used - // in bar series, and magric type should be considered. - textPosition === 'outside' && (textPosition = 'top'); + var textPosition; + if (opt.getTextPosition) { + textPosition = opt.getTextPosition(textStyleModel, isEmphasis); + } + else { + textPosition = textStyleModel.getShallow('position') + || (isEmphasis ? null : 'inside'); + // 'outside' is not a valid zr textPostion value, but used + // in bar series, and magric type should be considered. + textPosition === 'outside' && (textPosition = 'top'); + } + textStyle.textPosition = textPosition; textStyle.textOffset = textStyleModel.getShallow('offset'); var labelRotate = textStyleModel.getShallow('rotate'); @@ -1370,6 +1426,18 @@ function nearZero(val) { return val <= (1e-6) && val >= -(1e-6); } +// Register built-in shapes. These shapes might be overwirtten +// by users, although we do not recommend that. +registerShape('circle', Circle); +registerShape('sector', Sector); +registerShape('ring', Ring); +registerShape('polygon', Polygon); +registerShape('polyline', Polyline); +registerShape('rect', Rect); +registerShape('line', Line); +registerShape('bezierCurve', BezierCurve); +registerShape('arc', Arc); + export { Group, ZImage as Image, diff --git a/src/util/number.js b/src/util/number.js index 77e8966e38..efc4d740af 100644 --- a/src/util/number.js +++ b/src/util/number.js @@ -31,7 +31,7 @@ import * as zrUtil from 'zrender/src/core/util'; var RADIAN_EPSILON = 1e-4; function _trim(str) { - return str.replace(/^\s+/, '').replace(/\s+$/, ''); + return str.replace(/^\s+|\s+$/g, ''); } /** diff --git a/src/view/Component.js b/src/view/Component.js index 180c5028ad..c5bfc77cef 100644 --- a/src/view/Component.js +++ b/src/view/Component.js @@ -57,10 +57,10 @@ Component.prototype = { }; var componentProto = Component.prototype; -componentProto.updateView - = componentProto.updateLayout - = componentProto.updateVisual - = function (seriesModel, ecModel, api, payload) { +componentProto.updateView = + componentProto.updateLayout = + componentProto.updateVisual = + function (seriesModel, ecModel, api, payload) { // Do nothing; }; // Enable Component.extend. diff --git a/src/visual/dataColor.js b/src/visual/dataColor.js index 8fbd9ebfd4..63c2b84e9a 100644 --- a/src/visual/dataColor.js +++ b/src/visual/dataColor.js @@ -53,10 +53,16 @@ export default function (seriesType) { var singleDataColor = filteredIdx != null && data.getItemVisual(filteredIdx, 'color', true); - if (!singleDataColor) { + var singleDataBorderColor = filteredIdx != null + && data.getItemVisual(filteredIdx, 'borderColor', true); + + var itemModel; + if (!singleDataColor || !singleDataBorderColor) { // FIXME Performance - var itemModel = dataAll.getItemModel(rawIdx); + itemModel = dataAll.getItemModel(rawIdx); + } + if (!singleDataColor) { var color = itemModel.get('itemStyle.color') || seriesModel.getColorFromPalette( dataAll.getName(rawIdx) || (rawIdx + ''), seriesModel.__paletteScope, @@ -74,6 +80,21 @@ export default function (seriesType) { // Set data all color for legend dataAll.setItemVisual(rawIdx, 'color', singleDataColor); } + + if (!singleDataBorderColor) { + var borderColor = itemModel.get('itemStyle.borderColor'); + // Legend may use the visual info in data before processed + dataAll.setItemVisual(rawIdx, 'borderColor', borderColor); + + // Data is not filtered + if (filteredIdx != null) { + data.setItemVisual(filteredIdx, 'borderColor', borderColor); + } + } + else { + // Set data all borderColor for legend + dataAll.setItemVisual(rawIdx, 'borderColor', singleDataBorderColor); + } }); } }; diff --git a/src/visual/seriesColor.js b/src/visual/seriesColor.js index b253fff6ea..66e5a60aca 100644 --- a/src/visual/seriesColor.js +++ b/src/visual/seriesColor.js @@ -33,6 +33,10 @@ export default { // FIXME Set color function or use the platte color data.setVisual('color', color); + + var borderColorAccessPath = (seriesModel.visualBorderColorAccessPath || 'itemStyle.borderColor').split('.'); + var borderColor = seriesModel.get(borderColorAccessPath); + data.setVisual('borderColor', borderColor); // Only visible series has each data be visual encoded if (!ecModel.isSeriesFiltered(seriesModel)) { @@ -48,9 +52,13 @@ export default { var dataEach = function (data, idx) { var itemModel = data.getItemModel(idx); var color = itemModel.get(colorAccessPath, true); + var borderColor = itemModel.get(borderColorAccessPath, true); if (color != null) { data.setItemVisual(idx, 'color', color); } + if (borderColor != null) { + data.setItemVisual(idx, 'borderColor', borderColor); + } }; return { dataEach: data.hasItemOption ? dataEach : null }; diff --git a/test/bar-label-rotation.html b/test/bar-label-rotation.html index 0a75321d99..01e78c2455 100644 --- a/test/bar-label-rotation.html +++ b/test/bar-label-rotation.html @@ -33,7 +33,7 @@ margin: 0; } #main { - width: 1000px; + width: 100%; background: #fff; } diff --git a/test/bar-stream-large.html b/test/bar-stream-large.html index eb7d99d2cb..c2ad31e50f 100644 --- a/test/bar-stream-large.html +++ b/test/bar-stream-large.html @@ -86,6 +86,7 @@ '(4) Check snapshot rendering when "finished"' ], option: option, + autoResize: false, info: { xAxis: option.xAxis, series: {progressiveChunkMode: 'sequential'} diff --git a/test/build/mktest-tpl.html b/test/build/mktest-tpl.html new file mode 100644 index 0000000000..15836ef53a --- /dev/null +++ b/test/build/mktest-tpl.html @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + diff --git a/test/build/mktest.js b/test/build/mktest.js new file mode 100755 index 0000000000..9734e9ccf6 --- /dev/null +++ b/test/build/mktest.js @@ -0,0 +1,156 @@ +#!/usr/bin/env node + +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + + +const nodeFS = require('fs'); +const assert = require('assert'); +const nodePath = require('path'); +const commander = require('commander'); +const {color} = require('zrender/build/helper'); + +const colorFgCyanDim = color('fgCyan', 'dim'); +const colorFgGreen = color('fgGreen'); +const colorFgRed = color('fgRed'); + +const testDir = nodePath.resolve(__dirname, '..'); +const testTplPath = nodePath.resolve(__dirname, 'mktest-tpl.html'); +const tplSegmentDelimiter = ''; +const tagDomId = /{{TPL_DOM_ID}}/g; +const tagDomPlace = ''; +const tagJSPlace = ''; + +const manualText = ` + ${colorFgCyanDim('Usage:')} + + # Make a file named "bar-action.html" in directory "echarts/test" with 1 initial chart. + ${colorFgGreen('npm run mktest bar-action')} + # or + ${colorFgGreen('npm run mktest bar-action.html')} + # or + ${colorFgGreen('node ./test/build/mktest bar-action')} + + # Make a file named "bar-action.html" in directory "echarts/test" with 5 initial charts. + ${colorFgGreen('npm run mktest bar-action 5')} + # or + ${colorFgGreen('node ./test/build/mktest bar-action 5')} +`; + +function run() { + let opt = prepareOpt(); + + if (!opt) { + return; + } + + if (nodeFS.existsSync(opt.testFilePath)) { + printError(`The file ${opt.testFilePath} exists! Please chose another name.`); + printError('Please chose another name.'); + console.log(manualText); + return; + } + + const testTplContent = nodeFS.readFileSync(testTplPath, {encoding: 'utf8'}); + + const testFileContent = makeTestFileContent(opt, testTplContent); + + nodeFS.writeFileSync(opt.testFilePath, testFileContent, {encoding: 'utf8'}); + + console.log(`A test file has been added in: \n${colorFgGreen(opt.testFilePath)}`); + console.log(); +} + +function prepareOpt() { + commander + .usage('test-file-name [chart-number]') + .description(manualText) + .parse(process.argv); + + let args = commander.args || []; + + let testFileName = args[0]; + let testCaseNumber = args[1]; + if (isNaN(testCaseNumber)) { + testCaseNumber = 1; + } + + if (!testFileName) { + printError('Must input a file name!'); + console.log(manualText); + return; + } + + testFileName = normalizeInputExt(testFileName); + let testFilePath = nodePath.resolve(testDir, testFileName); + + return { + testFileName: testFileName, + testFilePath: testFilePath, + testCaseNumber: testCaseNumber + }; +} + +function makeTestFileContent(opt, testTplContent) { + const testTplSegments = testTplContent.split(tplSegmentDelimiter); + + const tplSegMain = testTplSegments[0]; + const tplSegDom = testTplSegments[1]; + const tplSegJS = testTplSegments[2]; + + assert(tplSegMain && tplSegDom && tplSegJS); + + let segDomList = []; + let segJSList = []; + + for (let i = 0; i < opt.testCaseNumber; i++) { + let domId = 'main' + i; + segDomList.push(tplSegDom.replace(tagDomId, domId)); + segJSList.push(tplSegJS.replace(tagDomId, domId)); + } + + let htmlContent = tplSegMain + .replace(tagDomPlace, segDomList.join('\n')) + .replace(tagJSPlace, segJSList.join('\n')); + + return htmlContent; +} + +function normalizeInputExt(testFileName) { + if (hasExt(testFileName, '.html')) { + return testFileName; + } + else if (hasExt(testFileName, '.htm')) { + return testFileName + 'l'; + } + else { + return testFileName + '.html'; + } + + function hasExt(fileName, ext) { + let idx = fileName.lastIndexOf(ext); + return idx >= 0 && idx === fileName.length - ext.length; + } +} + +function printError(msg) { + console.error(colorFgRed('[ERROR]: ' + msg)); +} + +run(); diff --git a/test/candlestick-large3.html b/test/candlestick-large3.html index 7272ef886e..0ed32cf81b 100644 --- a/test/candlestick-large3.html +++ b/test/candlestick-large3.html @@ -335,6 +335,7 @@ var panel = document.getElementById('panel0'); var chart = testHelper.create(echarts, 'main0', { title: 'Append data and progressive by mod', + autoResize: false, option: option, height: 550 }); diff --git a/test/clip.html b/test/clip.html new file mode 100644 index 0000000000..ad7dd3d72b --- /dev/null +++ b/test/clip.html @@ -0,0 +1,961 @@ + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ + + + + + +
+ + + + +
+ + + + +
+ + + +
+ + + +
+ + +
+ + + +
+ + \ No newline at end of file diff --git a/test/dataZoom-action.html b/test/dataZoom-action.html index cdef5f2b23..ba0fa2ba89 100644 --- a/test/dataZoom-action.html +++ b/test/dataZoom-action.html @@ -26,6 +26,7 @@ + @@ -74,9 +75,10 @@ startValue: dzs[1].startValue, endValue: dzs[1].endValue }] - alert( - '!!! ' + ctx.hint + ' !!!\n' + JSON.stringify(info, null, 2) - ); + console.log('!!! ' + ctx.hint + ' !!!\n' + JSON.stringify(info, null, 2)); + // alert( + // '!!! ' + ctx.hint + ' !!!\n' + JSON.stringify(info, null, 2) + // ); } function dispatchPercent(start, end) { @@ -168,7 +170,7 @@ var currEndValue = maxEndValue; var option = { - animationDurationUpdate: 3000, + animationDurationUpdate: 1000, tooltip: { trigger: 'axis' }, diff --git a/test/dataZoom-scatter-hv-polar.html b/test/dataZoom-scatter-hv-polar.html index dada44a1d8..a788d36c9d 100644 --- a/test/dataZoom-scatter-hv-polar.html +++ b/test/dataZoom-scatter-hv-polar.html @@ -31,7 +31,7 @@ padding: 0; margin: 0; width: 100%; - height: 600px; + height: 550px; } .operations { margin-top: 10px; diff --git a/test/dataZoom-scatter-hv.html b/test/dataZoom-scatter-hv.html index 68f4cc1659..85ee5372c2 100644 --- a/test/dataZoom-scatter-hv.html +++ b/test/dataZoom-scatter-hv.html @@ -27,6 +27,7 @@ - 新疆 should be yellow + 新疆 should be yellow. The pattern in the right geo should not be blurred.
+ + + + + + + + + + + + + + + + + +
+
+
+
+ + + + \ No newline at end of file diff --git a/test/legend.html b/test/legend.html index 6462feb613..0f74621608 100644 --- a/test/legend.html +++ b/test/legend.html @@ -152,8 +152,9 @@

Scroll vertically, left: 10, top: 'center', position: 'start', height: 50% ( var option = { legend: { + selector: true, data: seriesInfo.legendData, - backgroundColor: 'rgba(0,100,50,0.2)' + // backgroundColor: 'rgba(0,100,50,0.2)' }, tooltip: { }, @@ -218,6 +219,7 @@

Scroll vertically, left: 10, top: 'center', position: 'start', height: 50% ( legend: { right: 10, width: 300, + selector: true, data: seriesInfo.legendData, backgroundColor: 'rgba(0,100,50,0.2)' }, @@ -293,6 +295,7 @@

Scroll vertically, left: 10, top: 'center', position: 'start', height: 50% ( var option = { legend: { bottom: 20, + selector: true, data: seriesInfo.legendData, backgroundColor: 'rgba(0,100,50,0.2)' }, @@ -359,6 +362,7 @@

Scroll vertically, left: 10, top: 'center', position: 'start', height: 50% ( legend: { orient: 'vertical', right: 20, + selector: true, data: seriesInfo.legendData, backgroundColor: 'rgba(0,100,50,0.2)' }, @@ -426,6 +430,7 @@

Scroll vertically, left: 10, top: 'center', position: 'start', height: 50% ( orient: 'vertical', left: 20, top: 'center', + selector: true, height: 150, data: seriesInfo.legendData, backgroundColor: 'rgba(0,100,50,0.2)' @@ -491,11 +496,14 @@

Scroll vertically, left: 10, top: 'center', position: 'start', height: 50% ( var option = { legend: [{ type: 'scroll', + selector: true, + selectorIconSize: 50, data: seriesInfo.legendData, backgroundColor: 'rgba(0,100,50,0.2)' }, { type: 'scroll', bottom: 0, + selector: true, data: seriesInfo.legendData, backgroundColor: 'rgba(0,100,50,0.2)', pageButtonPosition: 'start' @@ -564,6 +572,7 @@

Scroll vertically, left: 10, top: 'center', position: 'start', height: 50% ( type: 'scroll', width: '80%', right: 30, + selector: true, data: seriesInfo.legendData, pageIconSize: 50, pageIconColor: 'red', @@ -642,6 +651,7 @@

Scroll vertically, left: 10, top: 'center', position: 'start', height: 50% ( right: 30, left: 30, data: seriesInfo.legendData, + selector: true, pageIconSize: 5, pageIconColor: 'red', pageIconInactiveColor: 'green', @@ -720,6 +730,7 @@

Scroll vertically, left: 10, top: 'center', position: 'start', height: 50% ( legend: { type: 'scroll', orient: 'vertical', + selector: true, bottom: 0, right: 30, data: seriesInfo.legendData @@ -785,6 +796,7 @@

Scroll vertically, left: 10, top: 'center', position: 'start', height: 50% ( legend: { type: 'scroll', orient: 'vertical', + selector: true, top: 'middle', left: 10, height: '50%', @@ -900,7 +912,8 @@

Scroll vertically, left: 10, top: 'center', position: 'start', height: 50% ( tooltip: { }, legend: { - data: ['a', 'b', 'c'] + data: ['a', 'b', 'c'], + selector: true }, series: [ { @@ -965,6 +978,7 @@

Scroll vertically, left: 10, top: 'center', position: 'start', height: 50% ( }, legend: { type: 'scroll', + selector: true, top: 10, left: 0, data: echarts.util.map(data, function (item) { @@ -1071,6 +1085,7 @@

Scroll vertically, left: 10, top: 'center', position: 'start', height: 50% ( var option = { legend: [{ type: 'scroll', + selector: true, itemGap: 30, backgroundColor: 'rgba(0,100,50,0.2)' }], @@ -1116,6 +1131,7 @@

Scroll vertically, left: 10, top: 'center', position: 'start', height: 50% ( var option = { legend: [{ type: 'scroll', + selector: true, data: seriesInfo.legendData }], tooltip: { @@ -1140,6 +1156,5 @@

Scroll vertically, left: 10, top: 'center', position: 'start', height: 50% ( - \ No newline at end of file diff --git a/test/lib/config.js b/test/lib/config.js index 58ec69ebd4..9b04aa0c44 100644 --- a/test/lib/config.js +++ b/test/lib/config.js @@ -25,22 +25,32 @@ // `true` by default for debugging. sourceMap == null && (sourceMap = true); + var params = {}; + location.search.slice(1).split('&').forEach(item => { + var kv = item.split('='); + params[kv[0]] = kv[1]; + }); // Set default renderer in dev mode from hash. - var matchResult = location.href.match(/[?&]__RENDERER__=(canvas|svg)(&|$)/); - if (matchResult) { - window.__ECHARTS__DEFAULT__RENDERER__ = matchResult[1]; + if (params.__RENDERER__) { + window.__ECHARTS__DEFAULT__RENDERER__ = params.__RENDERER__; } // Set echarts source code. - var matchResult = location.href.match(/[?&]__ECDIST__=(webpack-req-ec|webpack-req-eclibec|webpackold-req-ec|webpackold-req-eclibec)(&|$)/); - var ecDistPath = 'dist/echarts'; - if (matchResult) { + var ecDistPath; + if (params.__ECDIST__) { ecDistPath = ({ 'webpack-req-ec': '../echarts-boilerplate/echarts-webpack/dist/webpack-req-ec', 'webpack-req-eclibec': '../echarts-boilerplate/echarts-webpack/dist/webpack-req-eclibec', 'webpackold-req-ec': '../echarts-boilerplate/echarts-webpackold/dist/webpackold-req-ec', 'webpackold-req-eclibec': '../echarts-boilerplate/echarts-webpackold/dist/webpackold-req-eclibec', - })[matchResult[1]]; + })[params.__ECDIST__]; + if (!ecDistPath && params.__ECDIST__.match(/[0-9.]/)) { + // Version number + ecDistPath = 'test/runTest/tmp/__version__/' + params.__ECDIST__ + '/echarts'; + } + } + if (!ecDistPath) { + ecDistPath = 'dist/echarts'; } if (typeof require !== 'undefined') { @@ -77,6 +87,17 @@ }); } + // Not let scrollbar affect page size. + // It will AFFECT interaction in the automatic testing. + // TODO it only works on webkit + var styleEl = document.createElement('style'); + document.head.appendChild(styleEl); + styleEl.innerHTML = ` + body { + overflow: overlay!important; + } + `; + // It is not a good solution. // Do not need it any more: diff --git a/test/lib/testHelper.js b/test/lib/testHelper.js index ebd2d00c14..4e02abe469 100644 --- a/test/lib/testHelper.js +++ b/test/lib/testHelper.js @@ -239,7 +239,11 @@ lazyUpdate: opt.lazyUpdate, notMerge: opt.notMerge }); - testHelper.resizable(chart); + + let isAutoResize = opt.autoResize == null ? true : opt.autoResize; + if (isAutoResize) { + testHelper.resizable(chart); + } return chart; } @@ -247,10 +251,24 @@ testHelper.resizable = function (chart) { + let dom = chart.getDom(); + let width = dom.clientWidth; + let height = dom.clientHeight; + function resize() { + let newWidth = dom.clientWidth; + let newHeight = dom.clientHeight; + if (width !== newWidth || height !== newHeight) { + chart.resize(); + width = newWidth; + height = newHeight; + } + } if (window.attachEvent) { + // Use builtin resize in IE window.attachEvent('onresize', chart.resize); - } else if (window.addEventListener) { - window.addEventListener('resize', chart.resize, false); + } + else if (window.addEventListener) { + window.addEventListener('resize', resize, false); } }; diff --git a/test/line-animation.html b/test/line-animation.html index 5be2426bba..3864fc416d 100644 --- a/test/line-animation.html +++ b/test/line-animation.html @@ -184,7 +184,7 @@ data: data } ], - animationDurationUpdate: 3000 + animationDurationUpdate: 2000 }; diff --git a/test/pie-animation.html b/test/pie-animation.html new file mode 100644 index 0000000000..679b50bbb8 --- /dev/null +++ b/test/pie-animation.html @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + +
Animation: Transition from previous state to new state, in 10 seconds after clicking Go
+ +
+ +
Animation: Transition all over again, in 10 seconds after clicking Go
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/test/runTest/Timeline.js b/test/runTest/Timeline.js new file mode 100644 index 0000000000..f115125f89 --- /dev/null +++ b/test/runTest/Timeline.js @@ -0,0 +1,165 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +const {waitTime} = require('./util'); + +module.exports = class Timeline { + + constructor(page) { + this._page = page; + + this._timer = 0; + this._current = 0; + + this._ops = []; + this._currentOpIndex = 0; + + this._client; + } + + _reset() { + this._currentOpIndex = 0; + this._current = Date.now(); + this._elapsedTime = 0; + } + + + async runAction(action, takeScreenshot, playbackSpeed) { + if (!this._client) { + this._client = await this._page.target().createCDPSession(); + } + + this.stop(); + + playbackSpeed = playbackSpeed || 1; + + if (!action.ops.length) { + return; + } + + this._ops = action.ops.slice().sort((a, b) => { + return a.time - b.time; + }); + let firstOp = this._ops[0]; + this._ops.forEach(op => { + op.time -= firstOp.time; + }); + + this._reset(); + + let self = this; + + return new Promise(resolve => { + async function tick() { + let current = Date.now(); + let dTime = current - self._current; + self._elapsedTime += dTime * playbackSpeed; + self._current = current; + + await self._update(takeScreenshot, playbackSpeed); + if (self._currentOpIndex >= self._ops.length) { + // Finished + resolve(); + } + else { + self._timer = setTimeout(tick, 16); + } + } + tick(); + }); + } + + + stop() { + if (this._timer) { + clearTimeout(this._timer); + this._timer = 0; + } + } + + async _update(takeScreenshot, playbackSpeed) { + let op = this._ops[this._currentOpIndex]; + + if (op.time > this._elapsedTime) { + // Not yet. + return; + } + + let page = this._page; + switch (op.type) { + case 'mousedown': + await page.mouse.move(op.x, op.y); + await page.mouse.down(); + break; + case 'mouseup': + await page.mouse.move(op.x, op.y); + await page.mouse.up(); + break; + case 'mousemove': + await page.mouse.move(op.x, op.y); + break; + case 'mousewheel': + await page.evaluate((x, y, deltaX, deltaY) => { + let element = document.elementFromPoint(x, y); + // Here dispatch mousewheel event because echarts used it. + // TODO Consider upgrade? + let event = new WheelEvent('mousewheel', { + // PENDING + // Needs inverse delta? + deltaY, + clientX: x, clientY: y, + // Needs bubble to parent container + bubbles: true + }); + + element.dispatchEvent(event); + }, op.x, op.y, op.deltaX || 0, op.deltaY); + + // console.log('mousewheel', op.x, op.y, op.deltaX, op.deltaY); + // await this._client.send('Input.dispatchMouseEvent', { + // type: 'mouseWheel', + // x: op.x, + // y: op.y, + // deltaX: op.deltaX, + // deltaY: op.deltaY + // }); + // break; + case 'screenshot': + await takeScreenshot(); + break; + case 'valuechange': + if (op.target === 'select') { + await page.select(op.selector, op.value); + } + break; + } + + this._currentOpIndex++; + + // If next op is an auto screenshot + let nextOp = this._ops[this._currentOpIndex]; + if (nextOp && nextOp.type === 'screenshot-auto') { + let delay = nextOp.delay == null ? 400 : nextOp.delay; + // TODO Configuration time + await waitTime(delay / playbackSpeed); + await takeScreenshot(); + this._currentOpIndex++; + } + } +}; \ No newline at end of file diff --git a/test/runTest/actions/__meta__.json b/test/runTest/actions/__meta__.json new file mode 100644 index 0000000000..723bed1438 --- /dev/null +++ b/test/runTest/actions/__meta__.json @@ -0,0 +1,138 @@ +{ + "allZero": 1, + "appendData": 4, + "area-large": 2, + "area-stack": 2, + "area2": 1, + "aria-line-bar": 1, + "aria-pie": 1, + "axis-boundaryGap": 1, + "axis-lastLabel": 5, + "axis-multiple": 1, + "axis-style": 2, + "map-parallel": 1, + "map": 3, + "treemap-disk": 3, + "axis": 1, + "axisPosition": 2, + "bar-label-rotation": 2, + "bar-large": 2, + "bar-overflow-time-plot": 3, + "bar-polar-multi-series-radial": 1, + "bar-polar-multi-series": 1, + "bar-polar-null-data-radial": 1, + "bar-polar-stack": 1, + "bar-stack": 1, + "bar-start": 1, + "bar": 2, + "bar3": 1, + "bmap": 1, + "boxplot-multi": 1, + "boxplot": 1, + "brush": 7, + "brush2": 3, + "brush3": 2, + "calendar-converter": 1, + "calendar-heatmap": 1, + "calendar-month": 2, + "candlestick-empty": 1, + "candlestick-large": 4, + "candlestick-large2": 1, + "candlestick": 2, + "candlestickConnect": 4, + "color-mix-aqi": 1, + "connect-dynamic": 2, + "connect-manually": 1, + "connect": 1, + "connect2": 1, + "css-transform": 4, + "custom-children-remove": 1, + "custom-hexbin": 1, + "custom": 5, + "dataZoom-action": 4, + "dataZoom-axes": 4, + "dataZoom-axis-type": 3, + "dataZoom-clip": 3, + "dataZoom-extreme": 1, + "dataZoom-rainfall-connect": 1, + "dataZoom-rainfall-inside": 1, + "dataZoom-rainfall": 1, + "dataZoom-scatter-category": 2, + "dataZoom-scatter-hv-polar": 3, + "dataZoom-scatter-hv": 1, + "dataZoom-sync": 1, + "dataZoom-toolbox": 6, + "dataZoomHighPrecision": 3, + "dynamic-splitNumber": 1, + "ec-event": 4, + "funnel": 2, + "geo-map": 3, + "geoScatter": 1, + "getOption": 1, + "graph-grid": 1, + "graph-simple": 2, + "graph": 2, + "heatmap-map": 1, + "heatmap": 1, + "homepage3": 1, + "hoverStyle": 12, + "label-position": 1, + "largeLine-tooltip": 1, + "legend": 6, + "line-animation": 1, + "map-province": 1, + "mapWorld": 1, + "markArea": 1, + "media-dataZoom": 1, + "media-finance": 2, + "media-pie": 1, + "min-max-function": 1, + "parallel-aqi": 1, + "parallel-nutrients": 1, + "pictorial-repeat": 5, + "pie-action": 1, + "pie-calculable": 1, + "pie": 1, + "polarLine": 1, + "polarScatter": 1, + "radar3": 1, + "radar4": 1, + "radar2": 1, + "radar": 1, + "sankey-depth": 1, + "sankey-jump": 1, + "sankey-level": 1, + "scatter-random-stream-fix-axis": 1, + "scatter-single-axis": 3, + "scatterMatrix": 3, + "sunburst-book": 1, + "sunburst-canvas": 1, + "symbol2": 1, + "themeRiver": 1, + "timeScale": 1, + "timeScale2": 1, + "toolbox-textStyle": 1, + "toolbox-tooltip": 1, + "tooltip-axisPointer": 20, + "tooltip-cascade": 4, + "tooltip-event": 1, + "tooltip-link": 2, + "tooltip-rich": 1, + "tooltip-setOption": 2, + "tooltip": 10, + "tree-image": 1, + "tree-legend": 1, + "tree-radial": 1, + "treemap-disk2": 2, + "treemap-obama": 2, + "treemap-option": 1, + "treemap-option2": 2, + "visualMap-categories": 1, + "axes": 0, + "stackBar-dataZoom": 7, + "clip": 9, + "dataZoom-scroll": 3, + "map-contour": 2, + "map-default": 1, + "map-labels": 1 +} \ No newline at end of file diff --git a/test/runTest/actions/allZero.json b/test/runTest/actions/allZero.json new file mode 100644 index 0000000000..3d6974cfe3 --- /dev/null +++ b/test/runTest/actions/allZero.json @@ -0,0 +1 @@ +[{"name":"Action 2","ops":[{"type":"mousemove","time":698,"x":192,"y":274},{"type":"mousemove","time":899,"x":213,"y":276},{"type":"mousemove","time":1104,"x":238,"y":281},{"type":"mousemove","time":1306,"x":239,"y":281},{"type":"screenshot","time":2832},{"type":"mousemove","time":3509,"x":240,"y":281},{"type":"mousemove","time":3710,"x":271,"y":283},{"type":"mousemove","time":3923,"x":346,"y":294},{"type":"mousemove","time":4123,"x":367,"y":298},{"type":"screenshot","time":5039},{"type":"mousemove","time":5408,"x":368,"y":298},{"type":"mousemove","time":5609,"x":451,"y":309},{"type":"mousemove","time":5809,"x":498,"y":316},{"type":"mousemove","time":6017,"x":540,"y":318},{"type":"screenshot","time":6958}],"scrollY":0,"scrollX":0,"timestamp":1567956980119}] \ No newline at end of file diff --git a/test/runTest/actions/appendData.json b/test/runTest/actions/appendData.json new file mode 100644 index 0000000000..64f9de9325 --- /dev/null +++ b/test/runTest/actions/appendData.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":760,"x":107,"y":109},{"type":"mouseup","time":869,"x":107,"y":109},{"time":870,"delay":1000,"type":"screenshot-auto"},{"type":"mousedown","time":2305,"x":107,"y":109},{"type":"mouseup","time":2409,"x":107,"y":109},{"time":2410,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":3787,"x":108,"y":111},{"type":"mousemove","time":3989,"x":152,"y":213},{"type":"mousemove","time":4194,"x":159,"y":306},{"type":"mousemove","time":4403,"x":165,"y":336},{"type":"mousemove","time":4608,"x":163,"y":347},{"type":"mousemove","time":4859,"x":163,"y":349},{"type":"mousedown","time":5177,"x":163,"y":349},{"type":"mouseup","time":5292,"x":163,"y":349},{"time":5293,"delay":1000,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568009784459},{"name":"Action 2","ops":[{"type":"mousedown","time":530,"x":133,"y":135},{"type":"mouseup","time":639,"x":133,"y":135},{"time":640,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1881,"x":136,"y":135},{"type":"mousemove","time":2081,"x":165,"y":144},{"type":"mousemove","time":2289,"x":200,"y":160},{"type":"mousemove","time":2492,"x":216,"y":168},{"type":"mousedown","time":3325,"x":216,"y":168},{"type":"mouseup","time":3406,"x":216,"y":168},{"time":3407,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":4701,"x":216,"y":168},{"type":"mouseup","time":4810,"x":216,"y":168},{"time":4811,"delay":400,"type":"screenshot-auto"}],"scrollY":503,"scrollX":0,"timestamp":1568009922473},{"name":"Action 3","ops":[{"type":"mousedown","time":599,"x":130,"y":166},{"type":"mouseup","time":667,"x":130,"y":166},{"time":668,"delay":400,"type":"screenshot-auto"}],"scrollY":976,"scrollX":0,"timestamp":1568010043331},{"name":"Action 4","ops":[{"type":"mousedown","time":531,"x":241,"y":216},{"type":"mouseup","time":605,"x":241,"y":216},{"time":606,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":743,"x":241,"y":216},{"type":"mousemove","time":1621,"x":240,"y":215},{"type":"mousemove","time":1823,"x":167,"y":190},{"type":"mousemove","time":2024,"x":155,"y":184},{"type":"mousemove","time":2240,"x":151,"y":181},{"type":"mousedown","time":2257,"x":151,"y":181},{"type":"mouseup","time":2322,"x":151,"y":181},{"time":2323,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2746,"x":154,"y":181},{"type":"mousemove","time":2947,"x":205,"y":192},{"type":"mousemove","time":3158,"x":249,"y":210},{"type":"mousemove","time":3358,"x":249,"y":210},{"type":"mousemove","time":3375,"x":249,"y":210},{"type":"mousedown","time":3534,"x":249,"y":210},{"type":"mouseup","time":3608,"x":249,"y":210},{"time":3609,"delay":400,"type":"screenshot-auto"}],"scrollY":1474,"scrollX":0,"timestamp":1568010076154}] \ No newline at end of file diff --git a/test/runTest/actions/area-large.json b/test/runTest/actions/area-large.json new file mode 100644 index 0000000000..5ea4bec828 --- /dev/null +++ b/test/runTest/actions/area-large.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":197,"x":175,"y":577},{"type":"mousemove","time":477,"x":179,"y":577},{"type":"mousemove","time":680,"x":247,"y":580},{"type":"mousemove","time":923,"x":286,"y":580},{"type":"mouseup","time":1188,"x":286,"y":580},{"time":1189,"type":"screenshot-auto"},{"type":"mousedown","time":1811,"x":286,"y":580},{"type":"mousemove","time":1863,"x":290,"y":580},{"type":"mousemove","time":2063,"x":357,"y":580},{"type":"mousemove","time":2305,"x":378,"y":580},{"type":"mouseup","time":2471,"x":378,"y":580},{"time":2472,"type":"screenshot-auto"},{"type":"mousedown","time":3077,"x":378,"y":580},{"type":"mousemove","time":3148,"x":385,"y":580},{"type":"mousemove","time":3361,"x":471,"y":580},{"type":"mousemove","time":3593,"x":498,"y":579},{"type":"mouseup","time":3661,"x":498,"y":579},{"time":3662,"type":"screenshot-auto"},{"type":"mousedown","time":4662,"x":498,"y":579},{"type":"mousemove","time":4748,"x":500,"y":579},{"type":"mousemove","time":4948,"x":703,"y":586},{"type":"mousemove","time":5170,"x":709,"y":585},{"type":"mouseup","time":5435,"x":709,"y":585},{"time":5436,"type":"screenshot-auto"},{"type":"mousemove","time":6491,"x":709,"y":584},{"type":"mousemove","time":6691,"x":714,"y":398},{"type":"mousemove","time":6891,"x":735,"y":119},{"type":"mousemove","time":7094,"x":732,"y":12},{"type":"mousemove","time":7342,"x":726,"y":1},{"type":"mousemove","time":7542,"x":711,"y":17},{"type":"mousedown","time":7683,"x":711,"y":17},{"type":"mousemove","time":7744,"x":711,"y":17},{"type":"mouseup","time":7781,"x":711,"y":17},{"time":7782,"type":"screenshot-auto"},{"type":"mousemove","time":7959,"x":671,"y":63},{"type":"mousemove","time":8169,"x":324,"y":299},{"type":"mousemove","time":8377,"x":284,"y":305},{"type":"mousemove","time":8587,"x":279,"y":301},{"type":"mousemove","time":8793,"x":287,"y":278},{"type":"mousemove","time":8994,"x":288,"y":268},{"type":"mousedown","time":9138,"x":288,"y":267},{"type":"mousemove","time":9204,"x":288,"y":267},{"type":"mousemove","time":9411,"x":415,"y":348},{"type":"mousemove","time":9611,"x":462,"y":367},{"type":"mousemove","time":9811,"x":497,"y":375},{"type":"mousemove","time":10022,"x":501,"y":376},{"type":"mousemove","time":10254,"x":501,"y":376},{"type":"mouseup","time":10305,"x":501,"y":376},{"time":10306,"type":"screenshot-auto"},{"type":"mousemove","time":10861,"x":495,"y":372},{"type":"mousemove","time":11062,"x":392,"y":322},{"type":"mousemove","time":11273,"x":381,"y":322},{"type":"mousedown","time":11340,"x":381,"y":322},{"type":"mousemove","time":11480,"x":417,"y":331},{"type":"mousemove","time":11680,"x":486,"y":343},{"type":"mouseup","time":11942,"x":486,"y":343},{"time":11943,"type":"screenshot-auto"},{"type":"mousemove","time":12632,"x":488,"y":342},{"type":"mousemove","time":12833,"x":738,"y":62},{"type":"mousemove","time":13032,"x":755,"y":48},{"type":"mousemove","time":13232,"x":765,"y":17},{"type":"mousemove","time":13435,"x":750,"y":16},{"type":"mousemove","time":13651,"x":732,"y":13},{"type":"mousemove","time":13868,"x":725,"y":13},{"type":"mousedown","time":14321,"x":725,"y":13},{"type":"mouseup","time":14403,"x":725,"y":13},{"time":14404,"type":"screenshot-auto"},{"type":"mousemove","time":15267,"x":729,"y":13},{"type":"mousemove","time":15469,"x":731,"y":13},{"type":"mousedown","time":16586,"x":731,"y":13},{"type":"mouseup","time":16668,"x":731,"y":13},{"time":16669,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1567871874055},{"name":"Action 2","ops":[{"type":"mousewheel","time":260,"x":224,"y":295,"deltaY":4.000244140625},{"type":"mousewheel","time":356,"x":224,"y":295,"deltaY":28.846435546875},{"type":"mousewheel","time":399,"x":224,"y":295,"deltaY":89.1986083984375},{"type":"mousewheel","time":461,"x":224,"y":295,"deltaY":148.8311767578125},{"type":"mousewheel","time":492,"x":224,"y":295,"deltaY":187.8668212890625},{"type":"mousedown","time":1883,"x":224,"y":295},{"type":"mouseup","time":2004,"x":224,"y":295},{"time":2005,"delay":400,"type":"screenshot-auto"},{"type":"mousewheel","time":2385,"x":224,"y":295,"deltaY":-4.000244140625},{"type":"mousewheel","time":2433,"x":224,"y":295,"deltaY":-37.4188232421875},{"type":"mousewheel","time":2461,"x":224,"y":295,"deltaY":-146.4727783203125},{"type":"mousewheel","time":2486,"x":224,"y":295,"deltaY":-215.137939453125},{"type":"mousewheel","time":2737,"x":224,"y":295,"deltaY":-4.000244140625},{"type":"mousewheel","time":2804,"x":224,"y":295,"deltaY":-20.9100341796875},{"type":"mousedown","time":3664,"x":224,"y":295},{"type":"mouseup","time":3764,"x":224,"y":295},{"time":3765,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568969379204}] \ No newline at end of file diff --git a/test/runTest/actions/area-stack.json b/test/runTest/actions/area-stack.json new file mode 100644 index 0000000000..347fce409d --- /dev/null +++ b/test/runTest/actions/area-stack.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":430,"x":95,"y":71},{"type":"mouseup","time":539,"x":95,"y":71},{"time":540,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":655,"x":96,"y":70},{"type":"mousemove","time":856,"x":144,"y":71},{"type":"mousedown","time":1036,"x":144,"y":71},{"type":"mouseup","time":1139,"x":144,"y":71},{"time":1140,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":1239,"x":145,"y":70},{"type":"mousemove","time":1439,"x":166,"y":64},{"type":"mousemove","time":1675,"x":189,"y":62},{"type":"mousedown","time":1836,"x":203,"y":63},{"type":"mousemove","time":1903,"x":203,"y":63},{"type":"mouseup","time":1952,"x":203,"y":63},{"time":1953,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":2086,"x":205,"y":63},{"type":"mousemove","time":2287,"x":357,"y":61},{"type":"mousemove","time":2490,"x":383,"y":67},{"type":"mousedown","time":2624,"x":383,"y":67},{"type":"mouseup","time":2722,"x":383,"y":67},{"time":2723,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":2774,"x":385,"y":67},{"type":"mousemove","time":2975,"x":475,"y":69},{"type":"mousemove","time":3193,"x":502,"y":67},{"type":"mousedown","time":3269,"x":502,"y":67},{"type":"mouseup","time":3366,"x":502,"y":67},{"time":3367,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":3398,"x":505,"y":67},{"type":"mousemove","time":3602,"x":638,"y":72},{"type":"mousemove","time":3802,"x":642,"y":72},{"type":"mousedown","time":3934,"x":642,"y":72},{"type":"mouseup","time":4042,"x":642,"y":72},{"time":4043,"delay":800,"type":"screenshot-auto"},{"type":"mousedown","time":4850,"x":642,"y":72},{"type":"mouseup","time":4938,"x":642,"y":72},{"time":4939,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":5139,"x":641,"y":72},{"type":"mousemove","time":5339,"x":580,"y":72},{"type":"mousedown","time":5539,"x":519,"y":66},{"type":"mousemove","time":5576,"x":519,"y":66},{"type":"mouseup","time":5641,"x":519,"y":66},{"time":5642,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":5759,"x":513,"y":67},{"type":"mousemove","time":5959,"x":406,"y":74},{"type":"mousemove","time":6126,"x":404,"y":72},{"type":"mousedown","time":6241,"x":399,"y":67},{"type":"mousemove","time":6327,"x":399,"y":67},{"type":"mouseup","time":6346,"x":399,"y":67},{"time":6347,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":6437,"x":398,"y":67},{"type":"mousemove","time":6644,"x":262,"y":66},{"type":"mousedown","time":6893,"x":261,"y":66},{"type":"mousemove","time":6958,"x":261,"y":66},{"type":"mouseup","time":6979,"x":261,"y":66},{"time":6980,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":7045,"x":248,"y":67},{"type":"mousemove","time":7264,"x":135,"y":67},{"type":"mousedown","time":7510,"x":135,"y":67},{"type":"mousemove","time":7562,"x":135,"y":67},{"type":"mouseup","time":7613,"x":135,"y":67},{"time":7614,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":7796,"x":132,"y":67},{"type":"mousemove","time":8004,"x":100,"y":68},{"type":"mousemove","time":8228,"x":99,"y":68},{"type":"mousedown","time":8277,"x":99,"y":68},{"type":"mouseup","time":8363,"x":99,"y":68},{"time":8364,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":8991,"x":101,"y":68},{"type":"mousemove","time":9192,"x":680,"y":90},{"type":"mousemove","time":9393,"x":741,"y":90},{"type":"mousemove","time":9593,"x":729,"y":79},{"type":"mousedown","time":9893,"x":729,"y":79},{"type":"mouseup","time":9974,"x":729,"y":79},{"time":9975,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":10565,"x":728,"y":79},{"type":"mousemove","time":10778,"x":700,"y":76},{"type":"mousedown","time":11425,"x":700,"y":76},{"type":"mouseup","time":11512,"x":700,"y":76},{"time":11513,"delay":800,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568017961395},{"name":"Action 2","ops":[{"type":"mousedown","time":390,"x":299,"y":528},{"type":"mousemove","time":598,"x":302,"y":528},{"type":"mousemove","time":798,"x":431,"y":527},{"type":"mousemove","time":1009,"x":431,"y":526},{"type":"mouseup","time":1028,"x":431,"y":526},{"time":1029,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":1523,"x":431,"y":526},{"type":"mousemove","time":1726,"x":428,"y":526},{"type":"mousemove","time":1759,"x":428,"y":526},{"type":"mousemove","time":1959,"x":407,"y":524},{"type":"mousemove","time":2216,"x":407,"y":524},{"type":"mousedown","time":2325,"x":407,"y":524},{"type":"mousemove","time":2412,"x":407,"y":524},{"type":"mousemove","time":2612,"x":596,"y":518},{"type":"mouseup","time":2818,"x":604,"y":518},{"time":2819,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":2835,"x":604,"y":518},{"type":"mousemove","time":3627,"x":603,"y":517},{"type":"mousemove","time":3828,"x":478,"y":362},{"type":"mousemove","time":4029,"x":429,"y":315},{"type":"mousemove","time":4235,"x":385,"y":292},{"type":"mousemove","time":4435,"x":363,"y":284},{"type":"mousedown","time":4544,"x":363,"y":284},{"type":"mouseup","time":4643,"x":363,"y":284},{"time":4644,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":4701,"x":361,"y":285},{"type":"mousemove","time":4901,"x":218,"y":353},{"type":"mousemove","time":5114,"x":210,"y":357},{"type":"mousedown","time":5303,"x":210,"y":357},{"type":"mousemove","time":5436,"x":212,"y":357},{"type":"mousemove","time":5636,"x":344,"y":369},{"type":"mousemove","time":5847,"x":359,"y":369},{"type":"mouseup","time":6014,"x":359,"y":369},{"time":6015,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":6854,"x":362,"y":367},{"type":"mousemove","time":7054,"x":379,"y":314},{"type":"mousemove","time":7264,"x":401,"y":277},{"type":"mousedown","time":7484,"x":401,"y":277},{"type":"mouseup","time":7573,"x":401,"y":277},{"time":7574,"delay":800,"type":"screenshot-auto"}],"scrollY":974,"scrollX":0,"timestamp":1568017983687}] \ No newline at end of file diff --git a/test/runTest/actions/area2.json b/test/runTest/actions/area2.json new file mode 100644 index 0000000000..8c8373e71b --- /dev/null +++ b/test/runTest/actions/area2.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":626,"x":224,"y":277},{"type":"mouseup","time":742,"x":224,"y":277},{"time":743,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1143,"x":224,"y":277},{"type":"mousemove","time":1347,"x":299,"y":283},{"type":"mousemove","time":1549,"x":408,"y":297},{"type":"mousemove","time":1749,"x":410,"y":297},{"type":"mousedown","time":2077,"x":410,"y":297},{"type":"mouseup","time":2178,"x":410,"y":297},{"time":2179,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2921,"x":409,"y":296},{"type":"mousemove","time":3121,"x":185,"y":156},{"type":"mousemove","time":3331,"x":110,"y":72},{"type":"mousemove","time":3532,"x":45,"y":27},{"type":"mousemove","time":3746,"x":37,"y":16},{"type":"mousemove","time":3946,"x":37,"y":25},{"type":"mousedown","time":4346,"x":37,"y":25},{"type":"mouseup","time":4429,"x":37,"y":25},{"time":4430,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":5247,"x":37,"y":25},{"type":"mouseup","time":5321,"x":37,"y":25},{"time":5322,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5670,"x":41,"y":25},{"type":"mousemove","time":5870,"x":73,"y":23},{"type":"mousemove","time":6090,"x":95,"y":25},{"type":"mousedown","time":6236,"x":95,"y":25},{"type":"mouseup","time":6334,"x":95,"y":25},{"time":6335,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":6971,"x":95,"y":25},{"type":"mouseup","time":7068,"x":95,"y":25},{"time":7069,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":8134,"x":99,"y":28},{"type":"mousemove","time":8338,"x":417,"y":363},{"type":"mousemove","time":8539,"x":590,"y":577},{"type":"mousemove","time":8739,"x":615,"y":596},{"type":"mousemove","time":8985,"x":636,"y":591},{"type":"mousedown","time":9185,"x":636,"y":590},{"type":"mousemove","time":9191,"x":636,"y":590},{"type":"mousemove","time":9267,"x":636,"y":590},{"type":"mousemove","time":9473,"x":553,"y":584},{"type":"mousemove","time":9684,"x":465,"y":582},{"type":"mousemove","time":9890,"x":423,"y":584},{"type":"mousemove","time":10114,"x":411,"y":585},{"type":"mouseup","time":10308,"x":411,"y":585},{"time":10309,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":10691,"x":411,"y":585},{"type":"mousemove","time":10893,"x":412,"y":586},{"type":"mousedown","time":11058,"x":412,"y":586},{"type":"mousemove","time":11111,"x":412,"y":586},{"type":"mousemove","time":11311,"x":480,"y":588},{"type":"mousemove","time":11521,"x":519,"y":584},{"type":"mousemove","time":11726,"x":540,"y":584},{"type":"mousemove","time":11947,"x":570,"y":583},{"type":"mousemove","time":12175,"x":591,"y":581},{"type":"mousemove","time":12430,"x":596,"y":581},{"type":"mousemove","time":12639,"x":603,"y":581},{"type":"mouseup","time":12776,"x":603,"y":581},{"time":12777,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568010183823}] \ No newline at end of file diff --git a/test/runTest/actions/aria-line-bar.json b/test/runTest/actions/aria-line-bar.json new file mode 100644 index 0000000000..5acc882d24 --- /dev/null +++ b/test/runTest/actions/aria-line-bar.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":870,"x":462,"y":22},{"type":"mouseup","time":973,"x":462,"y":22},{"time":974,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":2004,"x":462,"y":22},{"type":"mouseup","time":2103,"x":462,"y":22},{"time":2104,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2415,"x":462,"y":22},{"type":"mousemove","time":2622,"x":407,"y":18},{"type":"mousemove","time":2822,"x":400,"y":18},{"type":"mousedown","time":3028,"x":400,"y":18},{"type":"mouseup","time":3139,"x":400,"y":18},{"time":3140,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":3929,"x":400,"y":18},{"type":"mouseup","time":4037,"x":400,"y":18},{"time":4038,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4678,"x":399,"y":18},{"type":"mousemove","time":4879,"x":367,"y":16},{"type":"mousemove","time":5141,"x":345,"y":15},{"type":"mousedown","time":5241,"x":345,"y":15},{"type":"mouseup","time":5345,"x":345,"y":15},{"time":5346,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":5999,"x":345,"y":15},{"type":"mouseup","time":6080,"x":345,"y":15},{"time":6081,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568012001795}] \ No newline at end of file diff --git a/test/runTest/actions/aria-pie.json b/test/runTest/actions/aria-pie.json new file mode 100644 index 0000000000..58ae931ef1 --- /dev/null +++ b/test/runTest/actions/aria-pie.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":621,"x":116,"y":26},{"type":"mousemove","time":821,"x":79,"y":19},{"type":"mousemove","time":1033,"x":79,"y":19},{"type":"mousedown","time":2203,"x":79,"y":19},{"type":"mouseup","time":2308,"x":79,"y":19},{"time":2309,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":3418,"x":79,"y":19},{"type":"mouseup","time":3538,"x":79,"y":19},{"time":3539,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4724,"x":79,"y":21},{"type":"mousemove","time":4925,"x":72,"y":39},{"type":"screenshot","time":5894},{"type":"mousedown","time":6302,"x":72,"y":39},{"type":"mouseup","time":6411,"x":72,"y":39},{"time":6412,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":7604,"x":72,"y":39},{"type":"mousemove","time":7723,"x":72,"y":39},{"type":"mouseup","time":7730,"x":72,"y":39},{"time":7731,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":8047,"x":72,"y":40},{"type":"mousemove","time":8247,"x":73,"y":43},{"type":"mousemove","time":8646,"x":73,"y":44},{"type":"mousemove","time":8847,"x":74,"y":70},{"type":"mousemove","time":9058,"x":73,"y":98},{"type":"mousemove","time":9259,"x":72,"y":100},{"type":"mousemove","time":9344,"x":72,"y":100},{"type":"mousemove","time":9544,"x":64,"y":125},{"type":"mousemove","time":9692,"x":64,"y":124},{"type":"mousemove","time":9892,"x":65,"y":118},{"type":"mousemove","time":10174,"x":65,"y":117},{"type":"mousedown","time":10691,"x":65,"y":117},{"type":"mouseup","time":10778,"x":65,"y":117},{"time":10779,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":11810,"x":65,"y":117},{"type":"mouseup","time":11901,"x":65,"y":117},{"time":11902,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568012040315}] \ No newline at end of file diff --git a/test/runTest/actions/axes.json b/test/runTest/actions/axes.json new file mode 100644 index 0000000000..0637a088a0 --- /dev/null +++ b/test/runTest/actions/axes.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/test/runTest/actions/axis-boundaryGap.json b/test/runTest/actions/axis-boundaryGap.json new file mode 100644 index 0000000000..b5c79f4b2a --- /dev/null +++ b/test/runTest/actions/axis-boundaryGap.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":431,"x":518,"y":233},{"type":"mousemove","time":755,"x":517,"y":233},{"type":"mousemove","time":956,"x":425,"y":228},{"type":"mousemove","time":1167,"x":402,"y":229},{"type":"mouseup","time":1423,"x":402,"y":229},{"time":1424,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1936,"x":402,"y":230},{"type":"mousedown","time":2085,"x":402,"y":231},{"type":"mousemove","time":2135,"x":401,"y":232},{"type":"mousemove","time":2336,"x":290,"y":232},{"type":"mousemove","time":2543,"x":252,"y":233},{"type":"mouseup","time":2593,"x":252,"y":233},{"time":2594,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":3291,"x":252,"y":233},{"type":"mousemove","time":3403,"x":256,"y":233},{"type":"mousemove","time":3604,"x":500,"y":232},{"type":"mousemove","time":3805,"x":580,"y":233},{"type":"mousemove","time":4021,"x":586,"y":234},{"type":"mouseup","time":4093,"x":586,"y":234},{"time":4094,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568012103151}] \ No newline at end of file diff --git a/test/runTest/actions/axis-lastLabel.json b/test/runTest/actions/axis-lastLabel.json new file mode 100644 index 0000000000..8888196fa6 --- /dev/null +++ b/test/runTest/actions/axis-lastLabel.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":503,"x":385,"y":433},{"type":"mousemove","time":1342,"x":385,"y":433},{"type":"mousemove","time":1542,"x":353,"y":433},{"type":"mousemove","time":1748,"x":310,"y":432},{"type":"mousemove","time":1948,"x":279,"y":433},{"type":"mousemove","time":2152,"x":242,"y":433},{"type":"mousemove","time":2352,"x":226,"y":434},{"type":"mousemove","time":2557,"x":205,"y":435},{"type":"mousemove","time":2768,"x":188,"y":436},{"type":"mousemove","time":3020,"x":171,"y":436},{"type":"mouseup","time":3555,"x":171,"y":436}],"scrollY":0,"scrollX":0,"timestamp":1567850619396},{"name":"Action 2","ops":[{"type":"mousemove","time":400,"x":382,"y":487},{"type":"mousedown","time":1959,"x":382,"y":487},{"type":"mousemove","time":2544,"x":382,"y":487},{"type":"mousemove","time":2744,"x":304,"y":482},{"type":"mousemove","time":2953,"x":259,"y":478},{"type":"mousemove","time":3154,"x":231,"y":477},{"type":"mousemove","time":3354,"x":204,"y":477},{"type":"mousemove","time":3554,"x":189,"y":478},{"type":"mousemove","time":3760,"x":189,"y":478},{"type":"mousemove","time":3841,"x":187,"y":478},{"type":"mousemove","time":4041,"x":151,"y":473},{"type":"mouseup","time":5093,"x":151,"y":473},{"type":"mousemove","time":7450,"x":151,"y":473}],"scrollY":404,"scrollX":0,"timestamp":1567850633405},{"name":"Action 3","ops":[{"type":"mousedown","time":683,"x":387,"y":477},{"type":"mousemove","time":1290,"x":387,"y":477},{"type":"mousemove","time":1491,"x":351,"y":475},{"type":"mousemove","time":1699,"x":321,"y":471},{"type":"mousemove","time":1903,"x":255,"y":466},{"type":"mousemove","time":2107,"x":239,"y":466},{"type":"mousemove","time":2309,"x":209,"y":467},{"type":"mousemove","time":2533,"x":194,"y":467},{"type":"mousemove","time":2739,"x":160,"y":468},{"type":"mouseup","time":3810,"x":160,"y":468}],"scrollY":878,"scrollX":0,"timestamp":1567850652216},{"name":"Action 4","ops":[{"type":"mousedown","time":576,"x":423,"y":432},{"type":"mousemove","time":967,"x":421,"y":432},{"type":"mousemove","time":1167,"x":386,"y":434},{"type":"mousemove","time":1371,"x":347,"y":434},{"type":"mousemove","time":1572,"x":313,"y":436},{"type":"mousemove","time":1778,"x":261,"y":438},{"type":"mousemove","time":1980,"x":227,"y":438},{"type":"mousemove","time":2180,"x":190,"y":438},{"type":"mousemove","time":2383,"x":180,"y":438},{"type":"mousemove","time":2583,"x":164,"y":438},{"type":"mousemove","time":2786,"x":151,"y":439},{"type":"mousemove","time":2987,"x":139,"y":439},{"type":"mousemove","time":3171,"x":139,"y":439},{"type":"mouseup","time":3751,"x":139,"y":439}],"scrollY":1376,"scrollX":0,"timestamp":1567850672723},{"name":"Action 5","ops":[{"type":"mousemove","time":727,"x":166,"y":301},{"type":"mousemove","time":927,"x":167,"y":307},{"type":"mousemove","time":1133,"x":168,"y":312},{"type":"mousemove","time":1335,"x":168,"y":316},{"type":"mousemove","time":1536,"x":168,"y":322}],"scrollY":1708,"scrollX":0,"timestamp":1567850687017}] \ No newline at end of file diff --git a/test/runTest/actions/axis-multiple.json b/test/runTest/actions/axis-multiple.json new file mode 100644 index 0000000000..63671def8c --- /dev/null +++ b/test/runTest/actions/axis-multiple.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":724,"x":333,"y":69},{"type":"mouseup","time":804,"x":333,"y":69},{"time":805,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":1298,"x":336,"y":69},{"type":"mousemove","time":1498,"x":391,"y":68},{"type":"mousedown","time":1808,"x":391,"y":68},{"type":"mouseup","time":1925,"x":391,"y":68},{"time":1926,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":2018,"x":393,"y":68},{"type":"mousemove","time":2219,"x":424,"y":67},{"type":"mousemove","time":2427,"x":448,"y":64},{"type":"mousemove","time":2663,"x":464,"y":64},{"type":"mousedown","time":2677,"x":464,"y":64},{"type":"mouseup","time":2758,"x":464,"y":64},{"time":2759,"delay":800,"type":"screenshot-auto"},{"type":"mousedown","time":3436,"x":464,"y":64},{"type":"mouseup","time":3518,"x":464,"y":64},{"time":3519,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":3819,"x":463,"y":64},{"type":"mousemove","time":4019,"x":400,"y":68},{"type":"mousemove","time":4229,"x":395,"y":71},{"type":"mousedown","time":4253,"x":395,"y":71},{"type":"mouseup","time":4320,"x":395,"y":71},{"time":4321,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":4568,"x":393,"y":71},{"type":"mousemove","time":4769,"x":319,"y":65},{"type":"mousemove","time":4979,"x":316,"y":65},{"type":"mousedown","time":5080,"x":316,"y":65},{"type":"mouseup","time":5164,"x":316,"y":65},{"time":5165,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":5634,"x":318,"y":65},{"type":"mousemove","time":5834,"x":453,"y":62},{"type":"mousemove","time":6034,"x":616,"y":67},{"type":"mousemove","time":6234,"x":685,"y":71},{"type":"mousemove","time":6447,"x":702,"y":71},{"type":"mousedown","time":6631,"x":703,"y":70},{"type":"mousemove","time":6647,"x":703,"y":70},{"type":"mouseup","time":6721,"x":703,"y":70},{"time":6722,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":7007,"x":706,"y":70},{"type":"mousemove","time":7219,"x":733,"y":71},{"type":"mousemove","time":7420,"x":733,"y":71},{"type":"mousedown","time":8086,"x":733,"y":71},{"type":"mouseup","time":8153,"x":733,"y":71},{"time":8154,"delay":800,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568017908623}] \ No newline at end of file diff --git a/test/runTest/actions/axis-style.json b/test/runTest/actions/axis-style.json new file mode 100644 index 0000000000..eae8c2b42c --- /dev/null +++ b/test/runTest/actions/axis-style.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":584,"x":723,"y":434},{"type":"mousemove","time":862,"x":721,"y":434},{"type":"mousemove","time":1062,"x":618,"y":433},{"type":"mousemove","time":1272,"x":547,"y":432},{"type":"mousemove","time":1472,"x":476,"y":433},{"type":"mousemove","time":1673,"x":431,"y":436},{"type":"mousemove","time":1874,"x":408,"y":437},{"type":"mousemove","time":2172,"x":395,"y":438},{"type":"mousemove","time":2388,"x":395,"y":438},{"type":"mousemove","time":2589,"x":395,"y":438},{"type":"mouseup","time":2686,"x":395,"y":438},{"time":2687,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":3525,"x":395,"y":438},{"type":"mousemove","time":3655,"x":399,"y":437},{"type":"mousemove","time":3856,"x":466,"y":431},{"type":"mousemove","time":4056,"x":662,"y":433},{"type":"mousemove","time":4258,"x":707,"y":430},{"type":"mousemove","time":4458,"x":712,"y":430},{"type":"mousemove","time":4597,"x":713,"y":430},{"type":"mousemove","time":4797,"x":750,"y":428},{"type":"mouseup","time":5062,"x":750,"y":428},{"time":5063,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568016855096},{"name":"Action 2","ops":[{"type":"mousedown","time":680,"x":645,"y":576},{"type":"mousemove","time":1004,"x":645,"y":576},{"type":"mousemove","time":1205,"x":337,"y":581},{"type":"mousemove","time":1482,"x":336,"y":582},{"type":"mouseup","time":2029,"x":336,"y":582},{"time":2030,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":2700,"x":336,"y":582},{"type":"mousemove","time":2932,"x":344,"y":581},{"type":"mousemove","time":3132,"x":423,"y":579},{"type":"mousemove","time":3332,"x":454,"y":578},{"type":"mouseup","time":3647,"x":454,"y":578},{"time":3648,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4164,"x":453,"y":578},{"type":"mousemove","time":4365,"x":451,"y":578},{"type":"mousedown","time":4537,"x":451,"y":578},{"type":"mousemove","time":4672,"x":455,"y":578},{"type":"mousemove","time":4872,"x":521,"y":572},{"type":"mousemove","time":5083,"x":559,"y":570},{"type":"mousemove","time":5284,"x":579,"y":568},{"type":"mousemove","time":5371,"x":579,"y":568},{"type":"mousemove","time":5571,"x":579,"y":567},{"type":"mouseup","time":5670,"x":579,"y":567},{"time":5671,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":6352,"x":579,"y":567},{"type":"mousemove","time":6510,"x":579,"y":567},{"type":"mousemove","time":6711,"x":640,"y":568},{"type":"mousemove","time":6936,"x":663,"y":567},{"type":"mouseup","time":7170,"x":663,"y":567},{"time":7171,"delay":400,"type":"screenshot-auto"}],"scrollY":316,"scrollX":0,"timestamp":1568016881541}] \ No newline at end of file diff --git a/test/runTest/actions/axis.json b/test/runTest/actions/axis.json new file mode 100644 index 0000000000..e69c4c7083 --- /dev/null +++ b/test/runTest/actions/axis.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":1021,"x":404,"y":23},{"type":"mouseup","time":1140,"x":404,"y":23},{"time":1141,"delay":1000,"type":"screenshot-auto"},{"type":"mousedown","time":1848,"x":404,"y":23},{"type":"mouseup","time":1958,"x":404,"y":23},{"time":1959,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":2759,"x":409,"y":22},{"type":"mousemove","time":2967,"x":463,"y":20},{"type":"mousedown","time":3105,"x":464,"y":20},{"type":"mouseup","time":3207,"x":464,"y":20},{"time":3208,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":3244,"x":464,"y":20},{"type":"mousedown","time":3810,"x":464,"y":20},{"type":"mouseup","time":3907,"x":464,"y":20},{"time":3908,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":4494,"x":456,"y":20},{"type":"mousemove","time":4695,"x":383,"y":19},{"type":"mousemove","time":4903,"x":350,"y":20},{"type":"mousemove","time":5111,"x":342,"y":20},{"type":"mousemove","time":5316,"x":337,"y":19},{"type":"mousemove","time":5537,"x":337,"y":19},{"type":"mousedown","time":5858,"x":337,"y":19},{"type":"mouseup","time":5955,"x":337,"y":19},{"time":5956,"delay":1000,"type":"screenshot-auto"},{"type":"mousedown","time":6578,"x":337,"y":19},{"type":"mouseup","time":6686,"x":337,"y":19},{"time":6687,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":7730,"x":338,"y":20},{"type":"mousemove","time":7931,"x":404,"y":119},{"type":"mousemove","time":8140,"x":425,"y":142},{"type":"mousemove","time":8365,"x":425,"y":142},{"type":"mousedown","time":8622,"x":425,"y":142},{"type":"mouseup","time":8730,"x":425,"y":142},{"time":8731,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":9132,"x":424,"y":142},{"type":"mousemove","time":9332,"x":291,"y":178},{"type":"mousemove","time":9540,"x":264,"y":185},{"type":"mousemove","time":9789,"x":264,"y":185},{"type":"mousedown","time":9811,"x":264,"y":185},{"type":"mouseup","time":9890,"x":264,"y":185},{"time":9891,"delay":1000,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568017263147}] \ No newline at end of file diff --git a/test/runTest/actions/axisPosition.json b/test/runTest/actions/axisPosition.json new file mode 100644 index 0000000000..44ca3f0cd2 --- /dev/null +++ b/test/runTest/actions/axisPosition.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":586,"x":375,"y":88},{"type":"mouseup","time":682,"x":375,"y":88},{"time":683,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":1417,"x":375,"y":88},{"type":"mouseup","time":1522,"x":375,"y":88},{"time":1523,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2176,"x":381,"y":88},{"type":"mousemove","time":2383,"x":415,"y":86},{"type":"mousedown","time":2654,"x":415,"y":86},{"type":"mouseup","time":2749,"x":415,"y":86},{"time":2750,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":3443,"x":415,"y":86},{"type":"mouseup","time":3554,"x":415,"y":86},{"time":3555,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568017359601},{"name":"Action 2","ops":[{"type":"mousedown","time":525,"x":374,"y":108},{"type":"mouseup","time":600,"x":374,"y":108},{"time":601,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":1319,"x":374,"y":108},{"type":"mouseup","time":1402,"x":374,"y":108},{"time":1403,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2827,"x":379,"y":108},{"type":"mousemove","time":3028,"x":401,"y":109},{"type":"mousemove","time":3272,"x":417,"y":109},{"type":"mousedown","time":3486,"x":417,"y":109},{"type":"mouseup","time":3563,"x":417,"y":109},{"time":3564,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":4120,"x":417,"y":109},{"type":"mouseup","time":4204,"x":417,"y":109},{"time":4205,"delay":400,"type":"screenshot-auto"}],"scrollY":558,"scrollX":0,"timestamp":1568017372276}] \ No newline at end of file diff --git a/test/runTest/actions/bar-label-rotation.json b/test/runTest/actions/bar-label-rotation.json new file mode 100644 index 0000000000..f073cf29b8 --- /dev/null +++ b/test/runTest/actions/bar-label-rotation.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":298,"x":329,"y":9},{"type":"mouseup","time":470,"x":329,"y":9},{"time":471,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1166,"x":333,"y":9},{"type":"mousemove","time":1367,"x":379,"y":13},{"type":"mousedown","time":1447,"x":379,"y":13},{"type":"mouseup","time":1565,"x":379,"y":13},{"time":1566,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1625,"x":380,"y":13},{"type":"mousemove","time":1834,"x":399,"y":10},{"type":"mousemove","time":2069,"x":412,"y":7},{"type":"mousedown","time":2301,"x":412,"y":7},{"type":"mouseup","time":2384,"x":412,"y":7},{"time":2385,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2555,"x":411,"y":7},{"type":"mousemove","time":2755,"x":409,"y":7},{"type":"mousemove","time":2850,"x":409,"y":7},{"type":"mousedown","time":3192,"x":409,"y":7},{"type":"mouseup","time":3289,"x":409,"y":7},{"time":3290,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3357,"x":407,"y":7},{"type":"mousemove","time":3558,"x":391,"y":9},{"type":"mousemove","time":3769,"x":379,"y":10},{"type":"mousedown","time":3776,"x":379,"y":10},{"type":"mouseup","time":3867,"x":379,"y":10},{"time":3868,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4073,"x":378,"y":10},{"type":"mousemove","time":4273,"x":343,"y":10},{"type":"mousemove","time":4528,"x":336,"y":10},{"type":"mousemove","time":4728,"x":330,"y":10},{"type":"mousedown","time":5138,"x":330,"y":10},{"type":"mouseup","time":5203,"x":330,"y":10},{"time":5204,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568017498985},{"name":"Action 2","ops":[{"type":"mousedown","time":1328,"x":788,"y":296},{"type":"mouseup","time":1421,"x":788,"y":296},{"time":1422,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2046,"x":788,"y":298},{"type":"mousemove","time":2247,"x":780,"y":319},{"type":"mousedown","time":2530,"x":780,"y":319},{"type":"mouseup","time":2630,"x":780,"y":319},{"time":2631,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3599,"x":781,"y":318},{"type":"mousemove","time":3799,"x":790,"y":306},{"type":"mousedown","time":4066,"x":790,"y":306},{"type":"mouseup","time":4155,"x":790,"y":306},{"time":4156,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568017551483}] \ No newline at end of file diff --git a/test/runTest/actions/bar-large.json b/test/runTest/actions/bar-large.json new file mode 100644 index 0000000000..5f0a3bf3d3 --- /dev/null +++ b/test/runTest/actions/bar-large.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":427,"x":308,"y":15},{"type":"mouseup","time":529,"x":308,"y":15},{"time":530,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":1244,"x":310,"y":15},{"type":"mousemove","time":1445,"x":349,"y":12},{"type":"mousedown","time":1537,"x":349,"y":12},{"type":"mouseup","time":1649,"x":349,"y":12},{"time":1650,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":1702,"x":349,"y":12},{"type":"mousemove","time":1902,"x":406,"y":13},{"type":"mousemove","time":2151,"x":424,"y":11},{"type":"mousedown","time":2534,"x":424,"y":11},{"type":"mouseup","time":2617,"x":424,"y":11},{"time":2618,"delay":800,"type":"screenshot-auto"},{"type":"mousedown","time":3398,"x":424,"y":11},{"type":"mouseup","time":3486,"x":424,"y":11},{"time":3487,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":3637,"x":424,"y":11},{"type":"mousemove","time":4058,"x":420,"y":10},{"type":"mousemove","time":4268,"x":367,"y":10},{"type":"mousedown","time":4366,"x":366,"y":10},{"type":"mousemove","time":4468,"x":366,"y":10},{"type":"mouseup","time":4484,"x":366,"y":10},{"time":4485,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":4869,"x":361,"y":10},{"type":"mousemove","time":5070,"x":308,"y":9},{"type":"mousemove","time":5308,"x":305,"y":10},{"type":"mousedown","time":5505,"x":305,"y":10},{"type":"mouseup","time":5602,"x":305,"y":10},{"time":5603,"delay":800,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568017628315},{"name":"Action 2","ops":[{"type":"mousedown","time":510,"x":526,"y":575},{"type":"mousemove","time":952,"x":524,"y":575},{"type":"mousemove","time":1156,"x":471,"y":575},{"type":"mousemove","time":1356,"x":358,"y":568},{"type":"mousemove","time":1593,"x":349,"y":568},{"type":"mouseup","time":1740,"x":349,"y":568},{"time":1741,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":2604,"x":349,"y":569},{"type":"mousemove","time":2804,"x":350,"y":571},{"type":"mousedown","time":2872,"x":350,"y":571},{"type":"mousemove","time":2939,"x":350,"y":571},{"type":"mousemove","time":3140,"x":260,"y":573},{"type":"mousemove","time":3340,"x":235,"y":574},{"type":"mouseup","time":3618,"x":235,"y":574},{"time":3619,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":3907,"x":242,"y":574},{"type":"mousemove","time":4107,"x":426,"y":584},{"type":"mousemove","time":4307,"x":456,"y":584},{"type":"mousemove","time":4523,"x":457,"y":579},{"type":"mousemove","time":4723,"x":437,"y":571},{"type":"mousemove","time":4904,"x":435,"y":571},{"type":"mousemove","time":5106,"x":432,"y":572},{"type":"mousedown","time":5357,"x":432,"y":572},{"type":"mousemove","time":5444,"x":432,"y":572},{"type":"mousemove","time":5645,"x":273,"y":577},{"type":"mousemove","time":5859,"x":235,"y":578},{"type":"mousemove","time":6060,"x":226,"y":579},{"type":"mousemove","time":6262,"x":225,"y":579},{"type":"mouseup","time":6330,"x":225,"y":579},{"time":6331,"delay":800,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568017638050}] \ No newline at end of file diff --git a/test/runTest/actions/bar-overflow-time-plot.json b/test/runTest/actions/bar-overflow-time-plot.json new file mode 100644 index 0000000000..1a3f13dea8 --- /dev/null +++ b/test/runTest/actions/bar-overflow-time-plot.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":502,"x":447,"y":65},{"type":"mouseup","time":599,"x":447,"y":65},{"time":600,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":915,"x":445,"y":65},{"type":"mousemove","time":1116,"x":401,"y":66},{"type":"mousedown","time":1222,"x":401,"y":66},{"type":"mouseup","time":1319,"x":401,"y":67},{"time":1320,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":1435,"x":401,"y":67},{"type":"mousemove","time":1567,"x":401,"y":67},{"type":"mousemove","time":1767,"x":343,"y":68},{"type":"mousedown","time":1875,"x":343,"y":68},{"type":"mousemove","time":1887,"x":343,"y":69},{"type":"mouseup","time":1982,"x":343,"y":69},{"time":1983,"delay":800,"type":"screenshot-auto"},{"type":"mousedown","time":2573,"x":343,"y":69},{"type":"mouseup","time":2680,"x":343,"y":69},{"time":2681,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":2843,"x":344,"y":69},{"type":"mousemove","time":3049,"x":382,"y":70},{"type":"mousedown","time":3183,"x":382,"y":70},{"type":"mouseup","time":3290,"x":382,"y":70},{"time":3291,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":3391,"x":382,"y":70},{"type":"mousemove","time":3591,"x":463,"y":70},{"type":"mousemove","time":3801,"x":463,"y":70},{"type":"mousedown","time":3867,"x":463,"y":70},{"type":"mouseup","time":3950,"x":463,"y":70},{"time":3951,"delay":800,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568017785262},{"name":"Action 2","ops":[{"type":"mousedown","time":526,"x":724,"y":434},{"type":"mousemove","time":727,"x":721,"y":434},{"type":"mousemove","time":927,"x":559,"y":434},{"type":"mousemove","time":1127,"x":362,"y":442},{"type":"mousemove","time":1328,"x":312,"y":445},{"type":"mousemove","time":1529,"x":243,"y":450},{"type":"mousemove","time":1729,"x":207,"y":456},{"type":"mouseup","time":1896,"x":207,"y":456},{"time":1897,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":2048,"x":207,"y":454},{"type":"mousemove","time":2248,"x":201,"y":437},{"type":"mousemove","time":2462,"x":201,"y":436},{"type":"mousemove","time":2564,"x":201,"y":435},{"type":"mousemove","time":2765,"x":202,"y":435},{"type":"mousedown","time":2782,"x":202,"y":435},{"type":"mousemove","time":2829,"x":202,"y":435},{"type":"mousemove","time":3030,"x":305,"y":432},{"type":"mousemove","time":3234,"x":392,"y":427},{"type":"mouseup","time":3413,"x":393,"y":426},{"time":3414,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":3435,"x":393,"y":426},{"type":"mousemove","time":3668,"x":390,"y":428},{"type":"mousemove","time":3869,"x":380,"y":432},{"type":"mousemove","time":4085,"x":388,"y":433},{"type":"mousemove","time":4302,"x":390,"y":434},{"type":"mousemove","time":4563,"x":391,"y":434},{"type":"mousedown","time":4672,"x":391,"y":434},{"type":"mousemove","time":4680,"x":393,"y":434},{"type":"mousemove","time":4881,"x":450,"y":428},{"type":"mousemove","time":5083,"x":636,"y":419},{"type":"mousemove","time":5286,"x":696,"y":417},{"type":"mousemove","time":5521,"x":709,"y":417},{"type":"mousemove","time":5651,"x":710,"y":418},{"type":"mousemove","time":5851,"x":722,"y":421},{"type":"mouseup","time":5873,"x":722,"y":421},{"time":5874,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":6602,"x":713,"y":423},{"type":"mousemove","time":6802,"x":500,"y":450},{"type":"mousemove","time":7002,"x":455,"y":455},{"type":"mousemove","time":7209,"x":419,"y":441},{"type":"mousemove","time":7418,"x":412,"y":438},{"type":"mousedown","time":7585,"x":409,"y":437},{"type":"mousemove","time":7621,"x":409,"y":437},{"type":"mousemove","time":7821,"x":300,"y":435},{"type":"mousemove","time":8022,"x":138,"y":437},{"type":"mousemove","time":8235,"x":99,"y":440},{"type":"mousemove","time":8435,"x":69,"y":442},{"type":"mousemove","time":8636,"x":66,"y":442},{"type":"mouseup","time":8686,"x":66,"y":442},{"time":8687,"delay":800,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568017794892},{"name":"Action 3","ops":[{"type":"screenshot","time":1740},{"type":"mousemove","time":2172,"x":403,"y":569},{"type":"mousemove","time":2374,"x":437,"y":568},{"type":"mousemove","time":2574,"x":452,"y":569},{"type":"screenshot","time":3960},{"type":"mousemove","time":4358,"x":453,"y":569},{"type":"mousemove","time":4558,"x":486,"y":551},{"type":"mousemove","time":4758,"x":490,"y":549},{"type":"mousemove","time":4981,"x":490,"y":549},{"type":"mousedown","time":5199,"x":490,"y":549},{"type":"mousemove","time":5364,"x":487,"y":549},{"type":"mousemove","time":5575,"x":406,"y":554},{"type":"mousemove","time":5790,"x":387,"y":555},{"type":"mousemove","time":5993,"x":385,"y":555},{"type":"mouseup","time":6092,"x":385,"y":555},{"time":6093,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":6494,"x":386,"y":555},{"type":"mousemove","time":6695,"x":391,"y":548},{"type":"mousemove","time":6849,"x":391,"y":548},{"type":"mousemove","time":7049,"x":383,"y":543},{"type":"mousedown","time":7366,"x":383,"y":543},{"type":"mousemove","time":7464,"x":384,"y":543},{"type":"mousemove","time":7671,"x":429,"y":541},{"type":"mousemove","time":7877,"x":504,"y":543},{"type":"mousemove","time":8078,"x":516,"y":541},{"type":"mouseup","time":8529,"x":516,"y":541},{"time":8530,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":8818,"x":516,"y":540},{"type":"mousemove","time":9018,"x":510,"y":477},{"type":"mousemove","time":9229,"x":511,"y":466},{"type":"mousemove","time":9498,"x":511,"y":466},{"type":"mousemove","time":9698,"x":510,"y":469},{"type":"mousemove","time":9930,"x":510,"y":470},{"type":"screenshot","time":10563}],"scrollY":316,"scrollX":0,"timestamp":1568017812996}] \ No newline at end of file diff --git a/test/runTest/actions/bar-polar-multi-series-radial.json b/test/runTest/actions/bar-polar-multi-series-radial.json new file mode 100644 index 0000000000..f1a357dd52 --- /dev/null +++ b/test/runTest/actions/bar-polar-multi-series-radial.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":419,"x":344,"y":15},{"type":"mouseup","time":526,"x":344,"y":15},{"time":527,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":840,"x":348,"y":15},{"type":"mousemove","time":1040,"x":391,"y":16},{"type":"mousedown","time":1253,"x":391,"y":16},{"type":"mouseup","time":1347,"x":391,"y":16},{"time":1348,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1423,"x":391,"y":16},{"type":"mousemove","time":1430,"x":393,"y":16},{"type":"mousemove","time":1630,"x":461,"y":12},{"type":"mousemove","time":1867,"x":460,"y":12},{"type":"mousedown","time":1998,"x":457,"y":13},{"type":"mousemove","time":2068,"x":457,"y":13},{"type":"mouseup","time":2099,"x":457,"y":13},{"time":2100,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2287,"x":456,"y":13},{"type":"mousemove","time":2487,"x":452,"y":13},{"type":"mousemove","time":2698,"x":447,"y":14},{"type":"mousemove","time":2914,"x":447,"y":13},{"type":"mousedown","time":3100,"x":447,"y":13},{"type":"mouseup","time":3197,"x":447,"y":13},{"time":3198,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3515,"x":441,"y":13},{"type":"mousemove","time":3716,"x":412,"y":13},{"type":"mousemove","time":3916,"x":396,"y":12},{"type":"mousedown","time":4052,"x":396,"y":12},{"type":"mouseup","time":4149,"x":396,"y":12},{"time":4150,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4250,"x":396,"y":12},{"type":"mousemove","time":4451,"x":355,"y":9},{"type":"mousemove","time":4702,"x":354,"y":9},{"type":"mousedown","time":4970,"x":354,"y":9},{"type":"mouseup","time":5054,"x":354,"y":9},{"time":5055,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568018104917}] \ No newline at end of file diff --git a/test/runTest/actions/bar-polar-multi-series.json b/test/runTest/actions/bar-polar-multi-series.json new file mode 100644 index 0000000000..3a84cf8db1 --- /dev/null +++ b/test/runTest/actions/bar-polar-multi-series.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":393,"x":345,"y":14},{"type":"mouseup","time":486,"x":345,"y":14},{"time":487,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":629,"x":346,"y":14},{"type":"mousemove","time":829,"x":377,"y":12},{"type":"mousemove","time":1037,"x":381,"y":12},{"type":"mousedown","time":1278,"x":381,"y":12},{"type":"mouseup","time":1387,"x":381,"y":12},{"time":1388,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1454,"x":382,"y":12},{"type":"mousemove","time":1654,"x":425,"y":12},{"type":"mousemove","time":1864,"x":431,"y":10},{"type":"mousemove","time":2064,"x":432,"y":10},{"type":"mousedown","time":2115,"x":432,"y":10},{"type":"mouseup","time":2196,"x":432,"y":10},{"time":2197,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":2945,"x":432,"y":10},{"type":"mouseup","time":3080,"x":432,"y":10},{"time":3081,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3217,"x":431,"y":10},{"type":"mousemove","time":3417,"x":398,"y":13},{"type":"mousedown","time":3764,"x":398,"y":13},{"type":"mouseup","time":3865,"x":398,"y":13},{"time":3866,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3967,"x":397,"y":13},{"type":"mousemove","time":4168,"x":357,"y":17},{"type":"mousemove","time":4368,"x":343,"y":16},{"type":"mousedown","time":4507,"x":343,"y":16},{"type":"mouseup","time":4616,"x":343,"y":16},{"time":4617,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568018156413}] \ No newline at end of file diff --git a/test/runTest/actions/bar-polar-null-data-radial.json b/test/runTest/actions/bar-polar-null-data-radial.json new file mode 100644 index 0000000000..e68c8a37fd --- /dev/null +++ b/test/runTest/actions/bar-polar-null-data-radial.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":413,"x":344,"y":12},{"type":"mouseup","time":509,"x":344,"y":12},{"time":510,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":755,"x":344,"y":12},{"type":"mousemove","time":955,"x":384,"y":10},{"type":"mousemove","time":1162,"x":390,"y":11},{"type":"mousedown","time":1281,"x":390,"y":11},{"type":"mouseup","time":1364,"x":390,"y":11},{"time":1365,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1404,"x":395,"y":10},{"type":"mousemove","time":1607,"x":449,"y":10},{"type":"mousedown","time":2092,"x":449,"y":10},{"type":"mouseup","time":2174,"x":449,"y":10},{"time":2175,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":2939,"x":449,"y":10},{"type":"mouseup","time":3029,"x":449,"y":10},{"time":3030,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3207,"x":447,"y":10},{"type":"mousemove","time":3407,"x":417,"y":11},{"type":"mousemove","time":3615,"x":403,"y":12},{"type":"mousedown","time":3723,"x":403,"y":12},{"type":"mouseup","time":3824,"x":403,"y":12},{"time":3825,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3924,"x":401,"y":12},{"type":"mousemove","time":4124,"x":363,"y":11},{"type":"mousemove","time":4326,"x":350,"y":11},{"type":"mousemove","time":4526,"x":345,"y":12},{"type":"mousedown","time":4641,"x":345,"y":12},{"type":"mouseup","time":4732,"x":345,"y":12},{"time":4733,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568018171833}] \ No newline at end of file diff --git a/test/runTest/actions/bar-polar-stack.json b/test/runTest/actions/bar-polar-stack.json new file mode 100644 index 0000000000..820c47ff3e --- /dev/null +++ b/test/runTest/actions/bar-polar-stack.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":435,"x":357,"y":13},{"type":"mouseup","time":552,"x":357,"y":13},{"time":553,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":737,"x":363,"y":13},{"type":"mousemove","time":937,"x":396,"y":12},{"type":"mousedown","time":1302,"x":396,"y":12},{"type":"mouseup","time":1402,"x":396,"y":12},{"time":1403,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1545,"x":397,"y":12},{"type":"mousemove","time":1751,"x":436,"y":13},{"type":"mousedown","time":2236,"x":436,"y":13},{"type":"mouseup","time":2337,"x":436,"y":13},{"time":2338,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":3185,"x":436,"y":13},{"type":"mouseup","time":3252,"x":436,"y":13},{"time":3253,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3427,"x":432,"y":13},{"type":"mousemove","time":3628,"x":411,"y":13},{"type":"mousedown","time":4288,"x":411,"y":13},{"type":"mouseup","time":4373,"x":411,"y":13},{"time":4374,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4456,"x":409,"y":13},{"type":"mousemove","time":4656,"x":357,"y":11},{"type":"mousemove","time":4863,"x":355,"y":11},{"type":"mousedown","time":5191,"x":355,"y":11},{"type":"mouseup","time":5265,"x":355,"y":11},{"time":5266,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568018203513}] \ No newline at end of file diff --git a/test/runTest/actions/bar-stack.json b/test/runTest/actions/bar-stack.json new file mode 100644 index 0000000000..575ec17a80 --- /dev/null +++ b/test/runTest/actions/bar-stack.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":307,"x":645,"y":74},{"type":"mouseup","time":381,"x":645,"y":74},{"time":382,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":476,"x":645,"y":75},{"type":"mousemove","time":684,"x":641,"y":93},{"type":"mousedown","time":734,"x":641,"y":93},{"type":"mouseup","time":818,"x":641,"y":93},{"time":819,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":884,"x":642,"y":97},{"type":"mousemove","time":1084,"x":643,"y":117},{"type":"mousedown","time":1184,"x":643,"y":117},{"type":"mouseup","time":1283,"x":643,"y":117},{"time":1284,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1341,"x":643,"y":117},{"type":"mousemove","time":1542,"x":645,"y":137},{"type":"mousemove","time":1751,"x":645,"y":140},{"type":"mousedown","time":1851,"x":645,"y":140},{"type":"mouseup","time":1926,"x":645,"y":140},{"time":1927,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1952,"x":645,"y":140},{"type":"mousemove","time":2152,"x":646,"y":169},{"type":"mousedown","time":2324,"x":646,"y":169},{"type":"mouseup","time":2418,"x":646,"y":169},{"time":2419,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2475,"x":647,"y":170},{"type":"mousemove","time":2675,"x":647,"y":186},{"type":"mousedown","time":2826,"x":647,"y":187},{"type":"mouseup","time":2895,"x":647,"y":187},{"time":2896,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2935,"x":647,"y":190},{"type":"mousemove","time":3138,"x":644,"y":217},{"type":"mousedown","time":3368,"x":644,"y":217},{"type":"mouseup","time":3456,"x":644,"y":217},{"time":3457,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3509,"x":644,"y":218},{"type":"mousemove","time":3709,"x":647,"y":232},{"type":"mousedown","time":3772,"x":647,"y":232},{"type":"mouseup","time":3850,"x":647,"y":232},{"time":3851,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3876,"x":647,"y":233},{"type":"mousemove","time":4077,"x":644,"y":263},{"type":"mousedown","time":4192,"x":644,"y":263},{"type":"mouseup","time":4274,"x":644,"y":263},{"time":4275,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4297,"x":644,"y":264},{"type":"mousemove","time":4504,"x":643,"y":286},{"type":"mousedown","time":4744,"x":643,"y":286},{"type":"mousemove","time":4791,"x":643,"y":286},{"type":"mouseup","time":4840,"x":643,"y":286},{"time":4841,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4991,"x":642,"y":304},{"type":"mousemove","time":5191,"x":642,"y":313},{"type":"mousedown","time":5239,"x":642,"y":313},{"type":"mouseup","time":5476,"x":642,"y":313},{"time":5477,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5492,"x":642,"y":325},{"type":"mousemove","time":5692,"x":646,"y":329},{"type":"mousemove","time":5892,"x":649,"y":314},{"type":"mousemove","time":6092,"x":643,"y":325},{"type":"mousemove","time":6292,"x":643,"y":329},{"type":"mousedown","time":6310,"x":643,"y":329},{"type":"mouseup","time":6359,"x":643,"y":329},{"time":6360,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6493,"x":641,"y":344},{"type":"mousemove","time":6694,"x":640,"y":352},{"type":"mousedown","time":6810,"x":640,"y":352},{"type":"mousemove","time":6879,"x":640,"y":352},{"type":"mouseup","time":6888,"x":640,"y":352},{"time":6889,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7081,"x":640,"y":353},{"type":"mousedown","time":7694,"x":640,"y":353},{"type":"mouseup","time":7792,"x":640,"y":353},{"time":7793,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7806,"x":640,"y":353},{"type":"mousemove","time":8010,"x":641,"y":339},{"type":"mousemove","time":8210,"x":642,"y":327},{"type":"mousedown","time":8459,"x":642,"y":327},{"type":"mouseup","time":8535,"x":642,"y":327},{"time":8536,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":8595,"x":642,"y":327},{"type":"mousemove","time":8795,"x":646,"y":301},{"type":"mousemove","time":8995,"x":646,"y":248},{"type":"mousemove","time":9201,"x":621,"y":84},{"type":"mousemove","time":9412,"x":640,"y":76},{"type":"mousedown","time":9595,"x":643,"y":74},{"type":"mousemove","time":9613,"x":643,"y":74},{"type":"mouseup","time":9668,"x":643,"y":74},{"time":9669,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568018408672}] \ No newline at end of file diff --git a/test/runTest/actions/bar-start.json b/test/runTest/actions/bar-start.json new file mode 100644 index 0000000000..617743ed6b --- /dev/null +++ b/test/runTest/actions/bar-start.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":871,"x":197,"y":71},{"type":"mouseup","time":1005,"x":197,"y":71},{"time":1006,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":1425,"x":199,"y":71},{"type":"mousemove","time":1626,"x":257,"y":68},{"type":"mousedown","time":2055,"x":257,"y":68},{"type":"mouseup","time":2137,"x":257,"y":68},{"time":2138,"delay":1000,"type":"screenshot-auto"},{"type":"mousedown","time":2818,"x":257,"y":68},{"type":"mouseup","time":2896,"x":257,"y":68},{"time":2897,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":3890,"x":251,"y":68},{"type":"mousemove","time":4090,"x":214,"y":65},{"type":"mousedown","time":4106,"x":214,"y":65},{"type":"mouseup","time":4209,"x":214,"y":65},{"time":4210,"delay":1000,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568018455276}] \ No newline at end of file diff --git a/test/runTest/actions/bar.json b/test/runTest/actions/bar.json new file mode 100644 index 0000000000..0752913b21 --- /dev/null +++ b/test/runTest/actions/bar.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"screenshot","time":1529},{"type":"mousedown","time":2115,"x":183,"y":21},{"type":"mouseup","time":2205,"x":183,"y":21},{"time":2206,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":2482,"x":184,"y":21},{"type":"mousemove","time":2683,"x":219,"y":20},{"type":"mousemove","time":2825,"x":222,"y":20},{"type":"mousemove","time":3026,"x":225,"y":19},{"type":"mousedown","time":3058,"x":225,"y":19},{"type":"mouseup","time":3139,"x":225,"y":19},{"time":3140,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":3185,"x":220,"y":20},{"type":"mousemove","time":3395,"x":182,"y":45},{"type":"mousedown","time":3758,"x":182,"y":45},{"type":"mouseup","time":3860,"x":182,"y":45},{"time":3861,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":3963,"x":196,"y":45},{"type":"mousemove","time":4163,"x":237,"y":43},{"type":"mousedown","time":4379,"x":237,"y":43},{"type":"mousemove","time":4425,"x":237,"y":43},{"type":"mouseup","time":4474,"x":237,"y":43},{"time":4475,"delay":300,"type":"screenshot-auto"},{"type":"mousedown","time":5042,"x":237,"y":43},{"type":"mouseup","time":5125,"x":237,"y":43},{"time":5126,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":5212,"x":236,"y":43},{"type":"mousemove","time":5413,"x":216,"y":42},{"type":"mousemove","time":5700,"x":216,"y":42},{"type":"mousedown","time":5927,"x":216,"y":42},{"type":"mouseup","time":6011,"x":216,"y":42},{"time":6012,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":6594,"x":215,"y":42},{"type":"mousemove","time":6796,"x":199,"y":28},{"type":"mousemove","time":6996,"x":199,"y":27},{"type":"mousedown","time":7163,"x":198,"y":22},{"type":"mouseup","time":7248,"x":198,"y":22},{"time":7249,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":7301,"x":198,"y":22},{"type":"mousemove","time":7316,"x":198,"y":22},{"type":"mousemove","time":7522,"x":231,"y":23},{"type":"mousemove","time":7731,"x":231,"y":23},{"type":"mousedown","time":7982,"x":231,"y":23},{"type":"mouseup","time":8047,"x":231,"y":23},{"time":8048,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":9298,"x":232,"y":23},{"type":"mousemove","time":9498,"x":427,"y":82},{"type":"mousemove","time":9702,"x":430,"y":84},{"type":"mousemove","time":9914,"x":414,"y":80},{"type":"mousemove","time":10115,"x":400,"y":76},{"type":"mousemove","time":10319,"x":400,"y":76},{"type":"mousedown","time":10804,"x":400,"y":76},{"type":"mouseup","time":10875,"x":400,"y":76},{"time":10876,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":11340,"x":401,"y":76},{"type":"mousemove","time":11540,"x":420,"y":73},{"type":"mousemove","time":11871,"x":423,"y":72},{"type":"mousedown","time":11888,"x":423,"y":72},{"type":"mouseup","time":11967,"x":423,"y":72},{"time":11968,"delay":300,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568018575624},{"name":"Action 2","ops":[{"type":"mousedown","time":600,"x":503,"y":68},{"type":"mouseup","time":743,"x":503,"y":68},{"time":744,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":1243,"x":479,"y":80},{"type":"mousemove","time":1452,"x":360,"y":123},{"type":"mousemove","time":1652,"x":331,"y":129},{"type":"mousedown","time":2085,"x":331,"y":129},{"type":"mousemove","time":2218,"x":334,"y":134},{"type":"mousemove","time":2418,"x":434,"y":246},{"type":"mousemove","time":2618,"x":463,"y":281},{"type":"mousemove","time":2818,"x":464,"y":283},{"type":"mouseup","time":2940,"x":464,"y":283},{"time":2941,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":3271,"x":466,"y":283},{"type":"mousemove","time":3472,"x":497,"y":300},{"type":"mousedown","time":3825,"x":497,"y":300},{"type":"mouseup","time":3936,"x":497,"y":300},{"time":3937,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":4560,"x":497,"y":297},{"type":"mousemove","time":4761,"x":514,"y":151},{"type":"mousemove","time":4971,"x":551,"y":74},{"type":"mousemove","time":5172,"x":547,"y":65},{"type":"mousemove","time":5372,"x":535,"y":71},{"type":"mousedown","time":5507,"x":535,"y":71},{"type":"mouseup","time":5607,"x":535,"y":71},{"time":5608,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":5976,"x":533,"y":72},{"type":"mousemove","time":6179,"x":392,"y":120},{"type":"mousemove","time":6379,"x":389,"y":120},{"type":"mousemove","time":6579,"x":396,"y":129},{"type":"mousedown","time":6673,"x":396,"y":129},{"type":"mousemove","time":6773,"x":396,"y":129},{"type":"mousemove","time":6985,"x":335,"y":176},{"type":"mousemove","time":7198,"x":371,"y":311},{"type":"mousemove","time":7399,"x":455,"y":323},{"type":"mousemove","time":7602,"x":516,"y":280},{"type":"mousemove","time":7810,"x":522,"y":214},{"type":"mousemove","time":8046,"x":514,"y":188},{"type":"mousemove","time":8314,"x":509,"y":182},{"type":"mouseup","time":8679,"x":509,"y":182},{"time":8680,"delay":300,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568018705990}] \ No newline at end of file diff --git a/test/runTest/actions/bar3.json b/test/runTest/actions/bar3.json new file mode 100644 index 0000000000..0e75f7cd2e --- /dev/null +++ b/test/runTest/actions/bar3.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":742,"x":360,"y":14},{"type":"mouseup","time":836,"x":360,"y":14},{"time":837,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":1253,"x":360,"y":14},{"type":"mousemove","time":1453,"x":440,"y":13},{"type":"mousemove","time":1664,"x":455,"y":12},{"type":"mousedown","time":1806,"x":455,"y":12},{"type":"mouseup","time":1889,"x":455,"y":12},{"time":1890,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":2556,"x":454,"y":12},{"type":"mousemove","time":2758,"x":402,"y":25},{"type":"mousemove","time":2980,"x":398,"y":32},{"type":"mousedown","time":3127,"x":398,"y":32},{"type":"mouseup","time":3224,"x":398,"y":32},{"time":3225,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":3809,"x":398,"y":32},{"type":"mousemove","time":4010,"x":398,"y":17},{"type":"mousedown","time":4127,"x":398,"y":17},{"type":"mouseup","time":4215,"x":398,"y":17},{"time":4216,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":4492,"x":392,"y":18},{"type":"mousemove","time":4692,"x":349,"y":34},{"type":"mousemove","time":4892,"x":341,"y":35},{"type":"mousedown","time":4993,"x":341,"y":35},{"type":"mouseup","time":5084,"x":341,"y":35},{"time":5085,"delay":300,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568018774677}] \ No newline at end of file diff --git a/test/runTest/actions/bmap.json b/test/runTest/actions/bmap.json new file mode 100644 index 0000000000..537fbd09ad --- /dev/null +++ b/test/runTest/actions/bmap.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousewheel","time":378,"x":480,"y":375,"deltaY":4.000244140625},{"type":"mousemove","time":1076,"x":478,"y":375},{"type":"mousemove","time":1276,"x":467,"y":378},{"type":"mousemove","time":1485,"x":466,"y":378},{"type":"mousemove","time":1504,"x":466,"y":378},{"type":"mousemove","time":1704,"x":379,"y":396},{"type":"mousemove","time":1911,"x":354,"y":399},{"type":"mousedown","time":1930,"x":354,"y":399},{"type":"mousemove","time":2125,"x":465,"y":386},{"type":"mousemove","time":2325,"x":503,"y":375},{"type":"mouseup","time":2506,"x":503,"y":375},{"time":2507,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3823,"x":502,"y":376},{"type":"mousewheel","time":3992,"x":502,"y":376,"deltaY":-4.000244140625},{"type":"mousemove","time":4034,"x":502,"y":376},{"type":"mousewheel","time":4041,"x":502,"y":376,"deltaY":-28.84765625},{"type":"mousedown","time":5674,"x":502,"y":376},{"type":"mouseup","time":5757,"x":502,"y":376},{"time":5758,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568969484233}] \ No newline at end of file diff --git a/test/runTest/actions/boxplot-multi.json b/test/runTest/actions/boxplot-multi.json new file mode 100644 index 0000000000..11a72e01a0 --- /dev/null +++ b/test/runTest/actions/boxplot-multi.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":442,"x":163,"y":546},{"type":"mousemove","time":600,"x":163,"y":546},{"type":"mousemove","time":807,"x":249,"y":543},{"type":"mouseup","time":958,"x":254,"y":542},{"time":959,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":1026,"x":254,"y":542},{"type":"mousedown","time":1640,"x":254,"y":542},{"type":"mousemove","time":1724,"x":257,"y":542},{"type":"mousemove","time":1947,"x":359,"y":542},{"type":"mouseup","time":1990,"x":359,"y":542},{"time":1991,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":2767,"x":359,"y":542},{"type":"mousemove","time":2968,"x":357,"y":533},{"type":"mousemove","time":3176,"x":406,"y":178},{"type":"mousemove","time":3377,"x":406,"y":130},{"type":"mousemove","time":3585,"x":401,"y":77},{"type":"mousemove","time":3959,"x":400,"y":77},{"type":"mousedown","time":3965,"x":400,"y":77},{"type":"mouseup","time":4049,"x":400,"y":77},{"time":4050,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":4581,"x":401,"y":77},{"type":"mousemove","time":4782,"x":470,"y":78},{"type":"mousedown","time":4945,"x":470,"y":78},{"type":"mousemove","time":4993,"x":470,"y":78},{"type":"mouseup","time":5062,"x":470,"y":78},{"time":5063,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":5349,"x":461,"y":78},{"type":"mousemove","time":5549,"x":353,"y":82},{"type":"mousemove","time":5749,"x":322,"y":82},{"type":"mousedown","time":5881,"x":322,"y":82},{"type":"mouseup","time":5980,"x":322,"y":82},{"time":5981,"delay":300,"type":"screenshot-auto"},{"type":"mousedown","time":6936,"x":322,"y":82},{"type":"mouseup","time":7019,"x":322,"y":82},{"time":7020,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":7216,"x":323,"y":82},{"type":"mousemove","time":7453,"x":323,"y":82},{"type":"mousemove","time":7486,"x":323,"y":82}],"scrollY":0,"scrollX":0,"timestamp":1568018831423}] \ No newline at end of file diff --git a/test/runTest/actions/boxplot.json b/test/runTest/actions/boxplot.json new file mode 100644 index 0000000000..8c1b4e068a --- /dev/null +++ b/test/runTest/actions/boxplot.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"vertical","time":1358,"target":"select"},{"time":1359,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568029071032}] \ No newline at end of file diff --git a/test/runTest/actions/brush.json b/test/runTest/actions/brush.json new file mode 100644 index 0000000000..f4aca38284 --- /dev/null +++ b/test/runTest/actions/brush.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":306,"x":293,"y":336},{"type":"mousemove","time":439,"x":294,"y":337},{"type":"mousemove","time":646,"x":361,"y":342},{"type":"mousemove","time":852,"x":362,"y":343},{"type":"mouseup","time":1052,"x":362,"y":343},{"time":1053,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":1184,"x":360,"y":346},{"type":"mousemove","time":1384,"x":345,"y":456},{"type":"mousemove","time":1586,"x":346,"y":471},{"type":"mousemove","time":1819,"x":345,"y":478},{"type":"mousemove","time":2019,"x":345,"y":479},{"type":"mousedown","time":2044,"x":345,"y":479},{"type":"mousemove","time":2156,"x":345,"y":479},{"type":"mousemove","time":2358,"x":317,"y":476},{"type":"mousemove","time":2558,"x":283,"y":472},{"type":"mousemove","time":2759,"x":280,"y":471},{"type":"mouseup","time":3176,"x":280,"y":471},{"time":3177,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":3312,"x":280,"y":471},{"type":"mousemove","time":3513,"x":412,"y":397},{"type":"mousemove","time":3713,"x":405,"y":398},{"type":"mousemove","time":3924,"x":386,"y":409},{"type":"mousemove","time":4197,"x":386,"y":410},{"type":"mousemove","time":4402,"x":386,"y":411},{"type":"mousedown","time":4723,"x":386,"y":411},{"type":"mousemove","time":4813,"x":385,"y":409},{"type":"mousemove","time":5017,"x":367,"y":350},{"type":"mousemove","time":5258,"x":357,"y":322},{"type":"mouseup","time":5832,"x":357,"y":322},{"time":5833,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":6546,"x":357,"y":322},{"type":"mousemove","time":6746,"x":398,"y":286},{"type":"mousemove","time":6957,"x":398,"y":285},{"type":"mousemove","time":7160,"x":398,"y":285},{"type":"mousedown","time":7326,"x":400,"y":280},{"type":"mousemove","time":7360,"x":400,"y":280},{"type":"mouseup","time":7429,"x":400,"y":280},{"time":7430,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":7792,"x":401,"y":276},{"type":"mousemove","time":7999,"x":442,"y":119},{"type":"mousemove","time":8212,"x":481,"y":92},{"type":"mousemove","time":8416,"x":486,"y":82},{"type":"mousemove","time":8616,"x":487,"y":77},{"type":"mousedown","time":8643,"x":487,"y":77},{"type":"mouseup","time":8725,"x":487,"y":77},{"time":8726,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":9132,"x":487,"y":78},{"type":"mousemove","time":9338,"x":361,"y":255},{"type":"mousemove","time":9548,"x":332,"y":285},{"type":"mousemove","time":9758,"x":463,"y":124},{"type":"mousemove","time":9968,"x":431,"y":95},{"type":"mousemove","time":10178,"x":432,"y":78},{"type":"mousedown","time":10415,"x":432,"y":78},{"type":"mouseup","time":10497,"x":432,"y":78},{"time":10498,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":10680,"x":424,"y":88},{"type":"mousemove","time":10881,"x":347,"y":229},{"type":"mousemove","time":11081,"x":346,"y":234},{"type":"mousedown","time":11107,"x":346,"y":234},{"type":"mousemove","time":11304,"x":312,"y":245},{"type":"mousemove","time":11524,"x":278,"y":294},{"type":"mousemove","time":11724,"x":283,"y":376},{"type":"mousemove","time":11925,"x":326,"y":383},{"type":"mousemove","time":12140,"x":376,"y":376},{"type":"mousemove","time":12369,"x":426,"y":336},{"type":"mousemove","time":12595,"x":450,"y":269},{"type":"mousemove","time":12809,"x":410,"y":229},{"type":"mousemove","time":13015,"x":404,"y":228},{"type":"mouseup","time":13116,"x":404,"y":228},{"time":13117,"delay":300,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568022759673},{"name":"Action 2","ops":[{"type":"mousedown","time":394,"x":334,"y":165},{"type":"mousemove","time":551,"x":333,"y":166},{"type":"mousemove","time":763,"x":270,"y":198},{"type":"mousemove","time":982,"x":257,"y":208},{"type":"mouseup","time":1231,"x":257,"y":208},{"time":1232,"delay":300,"type":"screenshot-auto"},{"type":"mousedown","time":1995,"x":257,"y":208},{"type":"mousemove","time":2036,"x":258,"y":208},{"type":"mousemove","time":2270,"x":331,"y":225},{"type":"mousemove","time":2490,"x":355,"y":236},{"type":"mouseup","time":2848,"x":355,"y":236},{"time":2849,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":3296,"x":355,"y":238},{"type":"mousemove","time":3498,"x":311,"y":311},{"type":"mousemove","time":3698,"x":304,"y":333},{"type":"mousedown","time":3881,"x":303,"y":333},{"type":"mousemove","time":3902,"x":303,"y":333},{"type":"mousemove","time":3923,"x":304,"y":333},{"type":"mousemove","time":4123,"x":362,"y":333},{"type":"mousemove","time":4390,"x":378,"y":333},{"type":"mousemove","time":4590,"x":378,"y":333},{"type":"mouseup","time":4753,"x":378,"y":333},{"time":4754,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":4888,"x":382,"y":333},{"type":"mousemove","time":5118,"x":464,"y":337},{"type":"mousemove","time":5319,"x":459,"y":335},{"type":"mousemove","time":5523,"x":455,"y":335},{"type":"mousedown","time":5719,"x":455,"y":335},{"type":"mousemove","time":5851,"x":453,"y":335},{"type":"mousemove","time":6073,"x":401,"y":334},{"type":"mousemove","time":6273,"x":369,"y":332},{"type":"mousemove","time":6522,"x":368,"y":332},{"type":"mouseup","time":6603,"x":368,"y":332},{"time":6604,"delay":300,"type":"screenshot-auto"}],"scrollY":151,"scrollX":0,"timestamp":1568022798479},{"name":"Action 3","ops":[{"type":"mousedown","time":439,"x":180,"y":178},{"type":"mousemove","time":555,"x":180,"y":179},{"type":"mousemove","time":800,"x":172,"y":218},{"type":"mousemove","time":1007,"x":172,"y":246},{"type":"mousemove","time":1270,"x":174,"y":269},{"type":"mousemove","time":1504,"x":174,"y":271},{"type":"mouseup","time":1759,"x":174,"y":271},{"time":1760,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1856,"x":189,"y":256},{"type":"mousemove","time":2062,"x":333,"y":108},{"type":"mousemove","time":2263,"x":375,"y":72},{"type":"mousemove","time":2464,"x":381,"y":66},{"type":"mousemove","time":2592,"x":381,"y":65},{"type":"mousemove","time":2793,"x":396,"y":58},{"type":"mousemove","time":3011,"x":441,"y":42},{"type":"mousemove","time":3212,"x":443,"y":41},{"type":"mousemove","time":3425,"x":441,"y":40},{"type":"mousemove","time":3544,"x":441,"y":40},{"type":"mousemove","time":3744,"x":435,"y":38},{"type":"mousedown","time":3759,"x":435,"y":38},{"type":"mouseup","time":3842,"x":435,"y":38},{"time":3843,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4226,"x":436,"y":38},{"type":"mousemove","time":4431,"x":474,"y":39},{"type":"mousemove","time":4631,"x":478,"y":39},{"type":"mousemove","time":4841,"x":484,"y":43},{"type":"mousedown","time":4894,"x":484,"y":43},{"type":"mouseup","time":4985,"x":484,"y":43},{"time":4986,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5053,"x":485,"y":43},{"type":"mousemove","time":5294,"x":480,"y":45},{"type":"mousemove","time":5496,"x":291,"y":125},{"type":"mousemove","time":5697,"x":148,"y":174},{"type":"mousemove","time":5923,"x":169,"y":161},{"type":"mousemove","time":6131,"x":162,"y":159},{"type":"mousedown","time":6234,"x":136,"y":160},{"type":"mousemove","time":6349,"x":93,"y":183},{"type":"mousemove","time":6557,"x":73,"y":266},{"type":"mousemove","time":6763,"x":147,"y":328},{"type":"mousemove","time":6972,"x":235,"y":311},{"type":"mousemove","time":7180,"x":260,"y":262},{"type":"mousemove","time":7395,"x":254,"y":196},{"type":"mousemove","time":7634,"x":210,"y":145},{"type":"mouseup","time":7693,"x":210,"y":145},{"time":7694,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":8048,"x":210,"y":145},{"type":"mousemove","time":8256,"x":215,"y":157},{"type":"mousemove","time":8479,"x":214,"y":161},{"type":"mousemove","time":8683,"x":196,"y":189},{"type":"mousedown","time":8860,"x":193,"y":192},{"type":"mousemove","time":8913,"x":193,"y":192},{"type":"mousemove","time":8954,"x":193,"y":191},{"type":"mousemove","time":9163,"x":195,"y":149},{"type":"mousemove","time":9378,"x":191,"y":122},{"type":"mousemove","time":9586,"x":191,"y":120},{"type":"mouseup","time":9883,"x":191,"y":120},{"time":9884,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":10208,"x":191,"y":121},{"type":"mousemove","time":10412,"x":197,"y":121},{"type":"mousemove","time":10627,"x":223,"y":117},{"type":"mousemove","time":10834,"x":443,"y":95},{"type":"mousemove","time":11034,"x":474,"y":66},{"type":"mousemove","time":11249,"x":489,"y":47},{"type":"mousemove","time":11451,"x":489,"y":41},{"type":"mousemove","time":11653,"x":489,"y":37},{"type":"mousedown","time":11749,"x":489,"y":37},{"type":"mouseup","time":11833,"x":489,"y":37},{"time":11834,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":11920,"x":487,"y":37},{"type":"mousemove","time":12121,"x":450,"y":43},{"type":"mousemove","time":12468,"x":450,"y":42},{"type":"mousemove","time":12675,"x":411,"y":38},{"type":"mousemove","time":12883,"x":411,"y":38},{"type":"mousemove","time":12952,"x":409,"y":38},{"type":"mousemove","time":13153,"x":390,"y":38},{"type":"mousemove","time":13385,"x":390,"y":38},{"type":"mousemove","time":13585,"x":395,"y":37},{"type":"mousedown","time":13688,"x":395,"y":37},{"type":"mouseup","time":13775,"x":395,"y":37},{"time":13776,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":14115,"x":392,"y":39},{"type":"mousemove","time":14315,"x":37,"y":119},{"type":"mousemove","time":14520,"x":1,"y":123},{"type":"mousemove","time":14724,"x":19,"y":129},{"type":"mousemove","time":14924,"x":62,"y":125},{"type":"mousemove","time":15137,"x":77,"y":123},{"type":"mousedown","time":15370,"x":77,"y":123},{"type":"mousemove","time":15425,"x":77,"y":123},{"type":"mousemove","time":15647,"x":186,"y":206},{"type":"mousemove","time":15847,"x":224,"y":234},{"type":"mousemove","time":16096,"x":235,"y":272},{"type":"mousemove","time":16307,"x":245,"y":295},{"type":"mouseup","time":16523,"x":245,"y":295},{"time":16524,"delay":400,"type":"screenshot-auto"}],"scrollY":746,"scrollX":0,"timestamp":1568029514326},{"name":"Action 4","ops":[{"type":"mousemove","time":112,"x":695,"y":112},{"type":"mousedown","time":706,"x":695,"y":112},{"type":"mouseup","time":796,"x":695,"y":112},{"time":797,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":1090,"x":695,"y":112},{"type":"mousemove","time":1290,"x":697,"y":125},{"type":"mousemove","time":1497,"x":703,"y":131},{"type":"mousemove","time":1698,"x":703,"y":132},{"type":"mousedown","time":2173,"x":703,"y":132},{"type":"mouseup","time":2258,"x":703,"y":132},{"time":2259,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":3523,"x":700,"y":132},{"type":"mousemove","time":3724,"x":183,"y":137},{"type":"mousemove","time":3926,"x":44,"y":130},{"type":"mousemove","time":4126,"x":100,"y":94},{"type":"mousemove","time":4327,"x":105,"y":91},{"type":"mousemove","time":4584,"x":105,"y":92},{"type":"mousedown","time":4711,"x":106,"y":94},{"type":"mousemove","time":4793,"x":106,"y":95},{"type":"mousemove","time":4996,"x":111,"y":131},{"type":"mouseup","time":5194,"x":111,"y":146},{"time":5195,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5210,"x":111,"y":146}],"scrollY":770,"scrollX":0,"timestamp":1568029582850},{"name":"Action 5","ops":[{"type":"mousedown","time":359,"x":398,"y":101},{"type":"mouseup","time":443,"x":398,"y":101},{"time":444,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":859,"x":395,"y":103},{"type":"mousemove","time":1059,"x":257,"y":189},{"type":"mousemove","time":1260,"x":233,"y":192},{"type":"mousemove","time":1461,"x":233,"y":192},{"type":"mousedown","time":1544,"x":233,"y":192},{"type":"mousemove","time":1577,"x":233,"y":192},{"type":"mousemove","time":1807,"x":365,"y":310},{"type":"mousemove","time":2015,"x":435,"y":385},{"type":"mousemove","time":2219,"x":455,"y":407},{"type":"mousemove","time":2445,"x":456,"y":409},{"type":"mouseup","time":2530,"x":456,"y":409},{"time":2531,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3562,"x":455,"y":411},{"type":"mousemove","time":3762,"x":430,"y":431},{"type":"mousemove","time":3998,"x":429,"y":433},{"type":"mousedown","time":4007,"x":429,"y":433},{"type":"mouseup","time":4083,"x":429,"y":433},{"time":4084,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4203,"x":429,"y":432},{"type":"mousemove","time":4404,"x":411,"y":240},{"type":"mousemove","time":4613,"x":412,"y":135},{"type":"mousemove","time":4813,"x":435,"y":95},{"type":"mousemove","time":5016,"x":438,"y":91},{"type":"mousemove","time":5250,"x":428,"y":103},{"type":"mousemove","time":5451,"x":428,"y":101},{"type":"mousedown","time":5501,"x":428,"y":101},{"type":"mouseup","time":5586,"x":428,"y":101},{"time":5587,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5887,"x":428,"y":101},{"type":"mousemove","time":6087,"x":269,"y":171},{"type":"mousemove","time":6288,"x":242,"y":188},{"type":"mousedown","time":6656,"x":242,"y":188},{"type":"mousemove","time":6720,"x":240,"y":189},{"type":"mousemove","time":6943,"x":207,"y":268},{"type":"mousemove","time":7154,"x":269,"y":334},{"type":"mousemove","time":7358,"x":371,"y":338},{"type":"mousemove","time":7574,"x":410,"y":318},{"type":"mousemove","time":7781,"x":448,"y":262},{"type":"mousemove","time":7986,"x":446,"y":235},{"type":"mousemove","time":8195,"x":392,"y":213},{"type":"mousemove","time":8404,"x":367,"y":208},{"type":"mousemove","time":8654,"x":365,"y":206},{"type":"mousemove","time":8854,"x":363,"y":205},{"type":"mouseup","time":9786,"x":363,"y":205},{"time":9787,"delay":400,"type":"screenshot-auto"}],"scrollY":1291,"scrollX":0,"timestamp":1568029677109},{"name":"Action 6","ops":[{"type":"mousedown","time":734,"x":62,"y":173},{"type":"mousemove","time":951,"x":62,"y":175},{"type":"mousemove","time":1159,"x":65,"y":199},{"type":"mousemove","time":1384,"x":65,"y":223},{"type":"mousemove","time":1589,"x":66,"y":255},{"type":"mousemove","time":1815,"x":66,"y":284},{"type":"mousemove","time":2024,"x":68,"y":304},{"type":"mousemove","time":2226,"x":69,"y":307},{"type":"mouseup","time":2905,"x":69,"y":307},{"time":2906,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":3626,"x":69,"y":307},{"type":"mousemove","time":3760,"x":68,"y":306},{"type":"mousemove","time":3979,"x":59,"y":253},{"type":"mousemove","time":4182,"x":64,"y":190},{"type":"mousemove","time":4385,"x":61,"y":170},{"type":"mousemove","time":4622,"x":61,"y":166},{"type":"mouseup","time":4877,"x":61,"y":166},{"time":4878,"delay":400,"type":"screenshot-auto"}],"scrollY":1291,"scrollX":0,"timestamp":1568029706060},{"name":"Action 7","ops":[{"type":"mousedown","time":326,"x":68,"y":104},{"type":"mouseup","time":416,"x":68,"y":104},{"time":417,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":597,"x":70,"y":104},{"type":"mousemove","time":797,"x":93,"y":103},{"type":"mousemove","time":1001,"x":109,"y":103},{"type":"mousedown","time":1099,"x":109,"y":103},{"type":"mouseup","time":1181,"x":109,"y":103},{"time":1182,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1332,"x":112,"y":103},{"type":"mousemove","time":1532,"x":138,"y":102},{"type":"mousemove","time":1736,"x":153,"y":102},{"type":"mousemove","time":1936,"x":158,"y":101},{"type":"mousedown","time":2202,"x":168,"y":100},{"type":"mousemove","time":2228,"x":168,"y":100},{"type":"mouseup","time":2298,"x":168,"y":100},{"time":2299,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2697,"x":175,"y":99},{"type":"mousemove","time":2897,"x":208,"y":98},{"type":"mousemove","time":3266,"x":207,"y":98},{"type":"mousemove","time":3467,"x":200,"y":98},{"type":"mousemove","time":3679,"x":212,"y":98},{"type":"mousemove","time":3902,"x":229,"y":98},{"type":"mousedown","time":3937,"x":229,"y":98},{"type":"mouseup","time":4014,"x":229,"y":98},{"time":4015,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":4751,"x":229,"y":98},{"type":"mouseup","time":4834,"x":229,"y":98},{"time":4835,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5002,"x":225,"y":98},{"type":"mousemove","time":5204,"x":202,"y":102},{"type":"mousemove","time":5437,"x":196,"y":102},{"type":"mousedown","time":5502,"x":196,"y":102},{"type":"mouseup","time":5572,"x":196,"y":102},{"time":5573,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5652,"x":195,"y":102},{"type":"mousemove","time":5854,"x":166,"y":102},{"type":"mousemove","time":6055,"x":137,"y":100},{"type":"mousedown","time":6220,"x":135,"y":100},{"type":"mousemove","time":6288,"x":135,"y":100},{"type":"mouseup","time":6312,"x":135,"y":100},{"time":6313,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6372,"x":134,"y":100},{"type":"mousemove","time":6589,"x":42,"y":102},{"type":"mousemove","time":6870,"x":50,"y":102},{"type":"mousedown","time":6927,"x":50,"y":102},{"type":"mouseup","time":7009,"x":50,"y":102},{"time":7010,"delay":400,"type":"screenshot-auto"}],"scrollY":1291,"scrollX":0,"timestamp":1568029714474}] \ No newline at end of file diff --git a/test/runTest/actions/brush2.json b/test/runTest/actions/brush2.json new file mode 100644 index 0000000000..32ba8588af --- /dev/null +++ b/test/runTest/actions/brush2.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":307,"x":465,"y":380},{"type":"mousemove","time":568,"x":462,"y":380},{"type":"mousemove","time":768,"x":355,"y":374},{"type":"mousemove","time":968,"x":260,"y":366},{"type":"mousemove","time":1183,"x":229,"y":366},{"type":"mouseup","time":1399,"x":229,"y":366},{"time":1400,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1626,"x":231,"y":366},{"type":"mousemove","time":1826,"x":494,"y":560},{"type":"mousemove","time":2032,"x":508,"y":584},{"type":"mousemove","time":2232,"x":511,"y":585},{"type":"mousemove","time":2439,"x":517,"y":584},{"type":"mousedown","time":2857,"x":517,"y":584},{"type":"mousemove","time":2953,"x":513,"y":583},{"type":"mousemove","time":3193,"x":408,"y":580},{"type":"mouseup","time":4286,"x":408,"y":580},{"time":4287,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4387,"x":408,"y":580},{"type":"mousemove","time":4587,"x":476,"y":587},{"type":"mousemove","time":4788,"x":476,"y":586},{"type":"mousemove","time":4988,"x":460,"y":585},{"type":"mousedown","time":5005,"x":458,"y":585},{"type":"mousemove","time":5191,"x":443,"y":585},{"type":"mousemove","time":5391,"x":405,"y":581},{"type":"mousemove","time":5607,"x":401,"y":581},{"type":"mouseup","time":5991,"x":401,"y":581},{"time":5992,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":6996,"x":401,"y":581},{"type":"mousemove","time":7104,"x":402,"y":581},{"type":"mousemove","time":7346,"x":521,"y":590},{"type":"mousemove","time":7547,"x":529,"y":590},{"type":"mousemove","time":7797,"x":532,"y":590},{"type":"mousemove","time":8008,"x":533,"y":590},{"type":"mouseup","time":8046,"x":533,"y":590},{"time":8047,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568029862208},{"name":"Action 2","ops":[{"type":"mousedown","time":296,"x":566,"y":76},{"type":"mouseup","time":421,"x":566,"y":76},{"time":422,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":872,"x":564,"y":77},{"type":"mousemove","time":1072,"x":371,"y":151},{"type":"mousemove","time":1274,"x":369,"y":154},{"type":"mousemove","time":1355,"x":369,"y":151},{"type":"mousemove","time":1556,"x":370,"y":147},{"type":"mousemove","time":1757,"x":459,"y":95},{"type":"mousemove","time":1961,"x":480,"y":82},{"type":"mousemove","time":2162,"x":486,"y":75},{"type":"mousemove","time":2408,"x":471,"y":74},{"type":"mousemove","time":2622,"x":471,"y":74},{"type":"mousemove","time":2822,"x":477,"y":75},{"type":"mousemove","time":3046,"x":479,"y":75},{"type":"mousemove","time":4278,"x":479,"y":76},{"type":"mousemove","time":4478,"x":505,"y":77},{"type":"mousemove","time":5028,"x":506,"y":77},{"type":"mousemove","time":5228,"x":516,"y":77},{"type":"mousemove","time":5459,"x":484,"y":78},{"type":"mousemove","time":6043,"x":482,"y":78},{"type":"mousemove","time":6260,"x":442,"y":75},{"type":"mousemove","time":6460,"x":441,"y":75},{"type":"mousemove","time":6551,"x":441,"y":75},{"type":"mousemove","time":6751,"x":435,"y":76},{"type":"mousedown","time":6881,"x":435,"y":76},{"type":"mouseup","time":6986,"x":435,"y":76},{"time":6987,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7112,"x":435,"y":76},{"type":"mousemove","time":7312,"x":362,"y":141},{"type":"mousedown","time":7488,"x":355,"y":143},{"type":"mousemove","time":7531,"x":355,"y":143},{"type":"mousemove","time":7742,"x":300,"y":155},{"type":"mousemove","time":7967,"x":277,"y":220},{"type":"mousemove","time":8190,"x":310,"y":251},{"type":"mousemove","time":8424,"x":413,"y":264},{"type":"mousemove","time":8656,"x":477,"y":218},{"type":"mousemove","time":8885,"x":472,"y":176},{"type":"mousemove","time":9112,"x":455,"y":162},{"type":"mousemove","time":9334,"x":444,"y":149},{"type":"mouseup","time":9850,"x":444,"y":149},{"time":9851,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":10151,"x":444,"y":149},{"type":"mousemove","time":10352,"x":455,"y":171},{"type":"mousemove","time":10553,"x":455,"y":174},{"type":"mousemove","time":11637,"x":454,"y":175},{"type":"mousemove","time":11849,"x":466,"y":482},{"type":"mousemove","time":12053,"x":489,"y":535},{"type":"mousemove","time":12253,"x":491,"y":561},{"type":"mousemove","time":12467,"x":486,"y":587},{"type":"mousedown","time":12671,"x":486,"y":587},{"type":"mousemove","time":12737,"x":485,"y":587},{"type":"mousemove","time":12937,"x":434,"y":586},{"type":"mousemove","time":13137,"x":431,"y":586},{"type":"mouseup","time":13167,"x":431,"y":586},{"time":13168,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":13284,"x":432,"y":586},{"type":"mousemove","time":13484,"x":436,"y":578},{"type":"mousemove","time":14386,"x":436,"y":579},{"type":"mousedown","time":14561,"x":436,"y":579},{"type":"mousemove","time":14593,"x":436,"y":579},{"type":"mousemove","time":14793,"x":407,"y":580},{"type":"mousemove","time":15386,"x":408,"y":580},{"type":"mousemove","time":15601,"x":419,"y":579},{"type":"mousemove","time":15950,"x":419,"y":579},{"type":"mousemove","time":16178,"x":432,"y":577},{"type":"mousemove","time":16821,"x":434,"y":577},{"type":"mousemove","time":17021,"x":447,"y":578},{"type":"mousemove","time":17156,"x":447,"y":578},{"type":"mouseup","time":17328,"x":447,"y":578},{"time":17329,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":17659,"x":445,"y":578},{"type":"mousemove","time":17859,"x":446,"y":574},{"type":"mousemove","time":17989,"x":446,"y":574},{"type":"mousemove","time":18189,"x":446,"y":564},{"type":"mousemove","time":18410,"x":446,"y":546}],"scrollY":0,"scrollX":0,"timestamp":1568029880017},{"name":"Action 3","ops":[{"type":"mousedown","time":304,"x":478,"y":162},{"type":"mouseup","time":423,"x":478,"y":162},{"time":424,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":689,"x":477,"y":162},{"type":"mousemove","time":891,"x":255,"y":232},{"type":"mousemove","time":1092,"x":240,"y":238},{"type":"mousedown","time":1294,"x":240,"y":238},{"type":"mousemove","time":1303,"x":240,"y":239},{"type":"mousemove","time":1503,"x":317,"y":338},{"type":"mousemove","time":1866,"x":409,"y":398},{"type":"mouseup","time":2179,"x":409,"y":398},{"time":2180,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2408,"x":409,"y":397},{"type":"mousemove","time":2618,"x":423,"y":363},{"type":"mousemove","time":2822,"x":448,"y":284},{"type":"mousedown","time":3051,"x":449,"y":270},{"type":"mousemove","time":3063,"x":449,"y":270},{"type":"mouseup","time":3171,"x":450,"y":270},{"time":3172,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3326,"x":450,"y":270},{"type":"mousemove","time":3685,"x":450,"y":269},{"type":"mousemove","time":3892,"x":499,"y":202},{"type":"mousemove","time":4097,"x":503,"y":174},{"type":"mousemove","time":4301,"x":509,"y":165},{"type":"mousedown","time":4436,"x":510,"y":162},{"type":"mouseup","time":4527,"x":510,"y":162},{"time":4528,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4557,"x":510,"y":162},{"type":"mousemove","time":4610,"x":506,"y":166},{"type":"mousemove","time":4819,"x":374,"y":228},{"type":"mousemove","time":5023,"x":365,"y":227},{"type":"mousedown","time":5056,"x":365,"y":227},{"type":"mousemove","time":5241,"x":273,"y":241},{"type":"mousemove","time":5455,"x":247,"y":330},{"type":"mousemove","time":5670,"x":314,"y":367},{"type":"mousemove","time":5870,"x":381,"y":352},{"type":"mousemove","time":6084,"x":420,"y":288},{"type":"mousemove","time":6353,"x":420,"y":289},{"type":"mouseup","time":6550,"x":420,"y":289},{"time":6551,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6580,"x":420,"y":289},{"type":"mousemove","time":7223,"x":423,"y":286},{"type":"mousemove","time":7433,"x":447,"y":246},{"type":"mousemove","time":7653,"x":449,"y":242},{"type":"mousedown","time":7964,"x":449,"y":242},{"type":"mouseup","time":8047,"x":449,"y":242},{"time":8048,"delay":400,"type":"screenshot-auto"}],"scrollY":520,"scrollX":0,"timestamp":1568029999702}] \ No newline at end of file diff --git a/test/runTest/actions/brush3.json b/test/runTest/actions/brush3.json new file mode 100644 index 0000000000..9291fb62b7 --- /dev/null +++ b/test/runTest/actions/brush3.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":404,"x":22,"y":72},{"type":"mouseup","time":505,"x":22,"y":72},{"time":506,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":622,"x":26,"y":73},{"type":"mousemove","time":822,"x":154,"y":99},{"type":"mousemove","time":1029,"x":154,"y":105},{"type":"mousemove","time":1255,"x":153,"y":118},{"type":"mousemove","time":1455,"x":154,"y":120},{"type":"mousedown","time":1556,"x":154,"y":120},{"type":"mousemove","time":1593,"x":154,"y":120},{"type":"mousemove","time":1803,"x":306,"y":177},{"type":"mousemove","time":2006,"x":378,"y":198},{"type":"mousemove","time":2206,"x":386,"y":199},{"type":"mouseup","time":2449,"x":386,"y":199},{"time":2450,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2765,"x":387,"y":197},{"type":"mousemove","time":2965,"x":405,"y":158},{"type":"mousemove","time":3174,"x":405,"y":157},{"type":"mousedown","time":3181,"x":405,"y":157},{"type":"mouseup","time":3258,"x":405,"y":157},{"time":3259,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3724,"x":405,"y":157},{"type":"mousemove","time":3924,"x":131,"y":97},{"type":"mousemove","time":4124,"x":63,"y":76},{"type":"mousemove","time":4324,"x":43,"y":71},{"type":"mousemove","time":4575,"x":52,"y":70},{"type":"mousedown","time":4658,"x":52,"y":70},{"type":"mouseup","time":4743,"x":52,"y":70},{"time":4744,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4775,"x":53,"y":70},{"type":"mousemove","time":4977,"x":206,"y":139},{"type":"mousemove","time":5177,"x":239,"y":138},{"type":"mousemove","time":5377,"x":235,"y":129},{"type":"mousedown","time":5434,"x":235,"y":129},{"type":"mousemove","time":5578,"x":190,"y":129},{"type":"mousemove","time":5781,"x":196,"y":176},{"type":"mousemove","time":5991,"x":281,"y":190},{"type":"mousemove","time":6204,"x":371,"y":182},{"type":"mousemove","time":6412,"x":389,"y":157},{"type":"mousemove","time":6620,"x":309,"y":118},{"type":"mouseup","time":6839,"x":295,"y":120},{"time":6840,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6849,"x":295,"y":120},{"type":"mousemove","time":7050,"x":317,"y":122},{"type":"mousemove","time":7263,"x":386,"y":121},{"type":"mousemove","time":7463,"x":400,"y":119},{"type":"mousedown","time":7764,"x":400,"y":119},{"type":"mouseup","time":7849,"x":400,"y":119},{"time":7850,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568030045858},{"name":"Action 2","ops":[{"type":"mousedown","time":378,"x":202,"y":401},{"type":"mousemove","time":521,"x":201,"y":400},{"type":"mousemove","time":722,"x":178,"y":377},{"type":"mousemove","time":923,"x":160,"y":352},{"type":"mousemove","time":1123,"x":150,"y":337},{"type":"mouseup","time":1514,"x":150,"y":337},{"time":1515,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":2314,"x":150,"y":337},{"type":"mousemove","time":2416,"x":150,"y":337},{"type":"mousemove","time":2633,"x":255,"y":338},{"type":"mousemove","time":2833,"x":284,"y":342},{"type":"mouseup","time":3083,"x":284,"y":342},{"time":3084,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3165,"x":284,"y":342}],"scrollY":116,"scrollX":0,"timestamp":1568030060979}] \ No newline at end of file diff --git a/test/runTest/actions/calendar-converter.json b/test/runTest/actions/calendar-converter.json new file mode 100644 index 0000000000..2f84ce9764 --- /dev/null +++ b/test/runTest/actions/calendar-converter.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"screenshot","time":809},{"type":"mousedown","time":1467,"x":338,"y":568},{"type":"mouseup","time":1548,"x":338,"y":568},{"time":1549,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1672,"x":344,"y":567},{"type":"mousemove","time":1881,"x":392,"y":569},{"type":"mousemove","time":2097,"x":394,"y":569},{"type":"mousedown","time":2629,"x":394,"y":569},{"type":"mouseup","time":2746,"x":394,"y":569},{"time":2747,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2924,"x":397,"y":569},{"type":"mousemove","time":3134,"x":451,"y":568},{"type":"mousedown","time":3222,"x":458,"y":567},{"type":"mousemove","time":3381,"x":458,"y":567},{"type":"mouseup","time":3417,"x":458,"y":567},{"time":3418,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":4162,"x":458,"y":567},{"type":"mouseup","time":4315,"x":458,"y":567},{"time":4316,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4674,"x":458,"y":567},{"type":"mousemove","time":4874,"x":421,"y":572},{"type":"mousemove","time":5084,"x":411,"y":572},{"type":"mousedown","time":5202,"x":411,"y":572},{"type":"mouseup","time":5323,"x":411,"y":572},{"time":5324,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5493,"x":408,"y":572},{"type":"mousemove","time":5693,"x":348,"y":568},{"type":"mousemove","time":5898,"x":344,"y":569},{"type":"mousedown","time":5984,"x":344,"y":569},{"type":"mouseup","time":6118,"x":344,"y":569},{"time":6119,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6193,"x":344,"y":569},{"type":"mousemove","time":6403,"x":354,"y":569},{"type":"mousemove","time":6610,"x":401,"y":570}],"scrollY":0,"scrollX":0,"timestamp":1568030119313}] \ No newline at end of file diff --git a/test/runTest/actions/calendar-heatmap.json b/test/runTest/actions/calendar-heatmap.json new file mode 100644 index 0000000000..d21d82b473 --- /dev/null +++ b/test/runTest/actions/calendar-heatmap.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"screenshot","time":989},{"type":"mousedown","time":1474,"x":207,"y":272},{"type":"mouseup","time":1579,"x":207,"y":272},{"time":1580,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1680,"x":208,"y":272},{"type":"mousemove","time":1880,"x":294,"y":272},{"type":"mousedown","time":2087,"x":294,"y":272},{"type":"mousemove","time":2093,"x":294,"y":272},{"type":"mouseup","time":2208,"x":294,"y":272},{"time":2209,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2298,"x":299,"y":272},{"type":"mousemove","time":2503,"x":369,"y":275},{"type":"mousemove","time":2730,"x":376,"y":272},{"type":"mousemove","time":2935,"x":377,"y":272},{"type":"mousedown","time":2970,"x":377,"y":272},{"type":"mouseup","time":3078,"x":377,"y":272},{"time":3079,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3230,"x":381,"y":272},{"type":"mousemove","time":3431,"x":500,"y":273},{"type":"mousemove","time":3632,"x":506,"y":271},{"type":"mousedown","time":3772,"x":507,"y":271},{"type":"mousemove","time":3836,"x":507,"y":271},{"type":"mouseup","time":3873,"x":507,"y":271},{"time":3874,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4015,"x":511,"y":271},{"type":"mousemove","time":4215,"x":588,"y":274},{"type":"mousemove","time":4421,"x":596,"y":274},{"type":"mousedown","time":4488,"x":596,"y":274},{"type":"mouseup","time":4605,"x":596,"y":274},{"time":4606,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":5674,"x":596,"y":274},{"type":"mouseup","time":5778,"x":596,"y":274},{"time":5779,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6149,"x":590,"y":274},{"type":"mousemove","time":6356,"x":513,"y":274},{"type":"mousemove","time":6589,"x":504,"y":274},{"type":"mousedown","time":6640,"x":504,"y":274},{"type":"mouseup","time":6758,"x":504,"y":274},{"time":6759,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568030194720}] \ No newline at end of file diff --git a/test/runTest/actions/calendar-month.json b/test/runTest/actions/calendar-month.json new file mode 100644 index 0000000000..ab20941fc5 --- /dev/null +++ b/test/runTest/actions/calendar-month.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"screenshot","time":958},{"type":"mousedown","time":1833,"x":465,"y":34},{"type":"mousemove","time":2462,"x":465,"y":34},{"type":"mousemove","time":2672,"x":425,"y":35},{"type":"mousemove","time":2912,"x":389,"y":35},{"type":"mousemove","time":3172,"x":388,"y":35},{"type":"mousemove","time":3380,"x":374,"y":36},{"type":"mouseup","time":3842,"x":374,"y":36},{"time":3843,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":4428,"x":374,"y":36},{"type":"mousemove","time":4763,"x":373,"y":36},{"type":"mousemove","time":4964,"x":326,"y":32},{"type":"mousemove","time":5206,"x":289,"y":32},{"type":"mousemove","time":5419,"x":289,"y":32},{"type":"mouseup","time":5657,"x":289,"y":32},{"time":5658,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5731,"x":293,"y":32},{"type":"mousemove","time":5937,"x":308,"y":31},{"type":"mousemove","time":6238,"x":329,"y":32},{"type":"mousemove","time":6499,"x":328,"y":32},{"type":"mousemove","time":6704,"x":327,"y":33},{"type":"mousemove","time":6949,"x":326,"y":32},{"type":"mousemove","time":7155,"x":324,"y":31},{"type":"mousedown","time":7591,"x":324,"y":31},{"type":"mousemove","time":8201,"x":333,"y":30},{"type":"mousemove","time":8401,"x":373,"y":29},{"type":"mousemove","time":8610,"x":398,"y":27},{"type":"mousemove","time":8869,"x":466,"y":23},{"type":"mousemove","time":9154,"x":475,"y":23},{"type":"mouseup","time":9415,"x":475,"y":23},{"time":9416,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568030427284},{"name":"Action 2","ops":[{"type":"screenshot","time":1040},{"type":"mousemove","time":1635,"x":399,"y":16},{"type":"mousemove","time":1850,"x":364,"y":13},{"type":"mousemove","time":2052,"x":358,"y":13},{"type":"screenshot","time":3044},{"type":"mousemove","time":3971,"x":358,"y":14},{"type":"mousemove","time":4172,"x":357,"y":100},{"type":"mousemove","time":4375,"x":359,"y":128},{"type":"mousemove","time":4654,"x":356,"y":130},{"type":"mousemove","time":4862,"x":354,"y":131},{"type":"screenshot","time":6045},{"type":"mousemove","time":6973,"x":354,"y":131},{"type":"mousemove","time":7174,"x":358,"y":187},{"type":"mousemove","time":7380,"x":360,"y":211},{"type":"mousemove","time":7612,"x":364,"y":196},{"type":"mousemove","time":7819,"x":373,"y":227},{"type":"mousemove","time":8019,"x":430,"y":338},{"type":"mousemove","time":8230,"x":422,"y":355},{"type":"mousemove","time":8465,"x":419,"y":352},{"type":"mousemove","time":8698,"x":419,"y":352},{"type":"mousemove","time":8776,"x":419,"y":352},{"type":"mousemove","time":9074,"x":419,"y":352},{"type":"mousemove","time":9280,"x":419,"y":353},{"type":"screenshot","time":9523},{"type":"mousemove","time":9860,"x":419,"y":353},{"type":"mousemove","time":10066,"x":419,"y":351},{"type":"mousemove","time":10377,"x":420,"y":350}],"scrollY":0,"scrollX":0,"timestamp":1568030452198}] \ No newline at end of file diff --git a/test/runTest/actions/candlestick-empty.json b/test/runTest/actions/candlestick-empty.json new file mode 100644 index 0000000000..3f7a847dbd --- /dev/null +++ b/test/runTest/actions/candlestick-empty.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"screenshot","time":604},{"type":"mousedown","time":1377,"x":402,"y":25},{"type":"mouseup","time":1473,"x":402,"y":25},{"time":1474,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":2122,"x":402,"y":25},{"type":"mouseup","time":2207,"x":402,"y":25},{"time":2208,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2701,"x":402,"y":25},{"type":"mousemove","time":2909,"x":678,"y":441},{"type":"mousemove","time":3119,"x":742,"y":522},{"type":"mousemove","time":3325,"x":748,"y":540},{"type":"mousemove","time":3540,"x":732,"y":561},{"type":"mousedown","time":4108,"x":732,"y":561},{"type":"mousemove","time":4370,"x":717,"y":561},{"type":"mousemove","time":4570,"x":475,"y":554},{"type":"mousemove","time":4776,"x":440,"y":555},{"type":"mouseup","time":4902,"x":440,"y":555},{"time":4903,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":5310,"x":440,"y":555},{"type":"mousemove","time":5403,"x":439,"y":555},{"type":"mousemove","time":5604,"x":263,"y":561},{"type":"mousemove","time":5811,"x":250,"y":561},{"type":"mouseup","time":5929,"x":250,"y":561},{"time":5930,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568030557739}] \ No newline at end of file diff --git a/test/runTest/actions/candlestick-large.json b/test/runTest/actions/candlestick-large.json new file mode 100644 index 0000000000..951837cc89 --- /dev/null +++ b/test/runTest/actions/candlestick-large.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"screenshot","time":599},{"type":"mousemove","time":738,"x":137,"y":357},{"type":"mousemove","time":943,"x":311,"y":362},{"type":"screenshot","time":2194},{"type":"mousemove","time":2290,"x":311,"y":362},{"type":"mousemove","time":2499,"x":428,"y":363},{"type":"mousemove","time":2713,"x":436,"y":363},{"type":"screenshot","time":3148},{"type":"mousemove","time":3424,"x":436,"y":363},{"type":"mousemove","time":3632,"x":594,"y":369},{"type":"mousemove","time":3845,"x":615,"y":367},{"type":"screenshot","time":4380},{"type":"mousemove","time":5593,"x":617,"y":372},{"type":"mousemove","time":5793,"x":664,"y":510},{"type":"mousemove","time":6000,"x":683,"y":549}],"scrollY":0,"scrollX":0,"timestamp":1568030575515},{"name":"Action 2","ops":[{"type":"mousedown","time":582,"x":723,"y":583},{"type":"mousemove","time":794,"x":721,"y":583},{"type":"mousemove","time":994,"x":709,"y":584},{"type":"mousemove","time":1212,"x":601,"y":583},{"type":"mousemove","time":1417,"x":559,"y":584},{"type":"mousemove","time":1634,"x":450,"y":587},{"type":"mousemove","time":1843,"x":423,"y":589},{"type":"mousemove","time":2051,"x":357,"y":589},{"type":"mouseup","time":2186,"x":357,"y":589},{"time":2187,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2295,"x":357,"y":590},{"type":"mousedown","time":2901,"x":357,"y":590},{"type":"mousemove","time":3346,"x":355,"y":590},{"type":"mousemove","time":3553,"x":277,"y":589},{"type":"mousemove","time":3774,"x":157,"y":588},{"type":"mousemove","time":3987,"x":94,"y":589},{"type":"mousemove","time":4334,"x":94,"y":589},{"type":"mouseup","time":4554,"x":94,"y":589},{"time":4555,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":5158,"x":94,"y":589},{"type":"mousemove","time":5248,"x":98,"y":588},{"type":"mousemove","time":5448,"x":182,"y":583},{"type":"mousemove","time":5653,"x":529,"y":582},{"type":"mousemove","time":5855,"x":553,"y":584},{"type":"mousemove","time":6066,"x":489,"y":584},{"type":"mousemove","time":6272,"x":487,"y":584},{"type":"mouseup","time":6394,"x":487,"y":584},{"time":6395,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6983,"x":487,"y":584},{"type":"mousemove","time":7188,"x":487,"y":580},{"type":"mousedown","time":7324,"x":487,"y":580},{"type":"mousemove","time":7418,"x":490,"y":580},{"type":"mousemove","time":7618,"x":703,"y":583},{"type":"mousemove","time":7823,"x":754,"y":581},{"type":"mousemove","time":8041,"x":755,"y":581},{"type":"mouseup","time":8127,"x":755,"y":581},{"time":8128,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568030602349},{"name":"Action 3","ops":[{"type":"mousedown","time":552,"x":642,"y":70},{"type":"mouseup","time":641,"x":642,"y":70},{"time":642,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":796,"x":635,"y":76},{"type":"mousemove","time":1004,"x":519,"y":151},{"type":"mousemove","time":1204,"x":518,"y":151},{"type":"mousedown","time":1213,"x":518,"y":151},{"type":"mousemove","time":1449,"x":466,"y":213},{"type":"mousemove","time":1661,"x":543,"y":294},{"type":"mousemove","time":1877,"x":637,"y":271},{"type":"mousemove","time":2089,"x":665,"y":163},{"type":"mousemove","time":2302,"x":601,"y":132},{"type":"mouseup","time":2468,"x":600,"y":132},{"time":2469,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2598,"x":600,"y":133},{"type":"mousemove","time":2807,"x":607,"y":144},{"type":"mousemove","time":3631,"x":607,"y":143},{"type":"mousemove","time":3838,"x":612,"y":139},{"type":"mousemove","time":4049,"x":628,"y":124},{"type":"mousemove","time":4255,"x":628,"y":124},{"type":"mousedown","time":4325,"x":628,"y":124},{"type":"mouseup","time":4422,"x":628,"y":124},{"time":4423,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568030618160},{"name":"Action 4","ops":[{"type":"mousedown","time":361,"x":97,"y":63},{"type":"mouseup","time":438,"x":97,"y":63},{"time":439,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":1164,"x":97,"y":63},{"type":"mouseup","time":1246,"x":97,"y":63},{"time":1247,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568030626532}] \ No newline at end of file diff --git a/test/runTest/actions/candlestick-large2.json b/test/runTest/actions/candlestick-large2.json new file mode 100644 index 0000000000..9d589d2753 --- /dev/null +++ b/test/runTest/actions/candlestick-large2.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":527,"x":209,"y":104},{"type":"mouseup","time":648,"x":209,"y":104},{"time":649,"delay":2000,"type":"screenshot-auto"},{"type":"mousedown","time":1908,"x":209,"y":104},{"type":"mouseup","time":2011,"x":209,"y":104},{"time":2012,"delay":2000,"type":"screenshot-auto"},{"type":"mousemove","time":3037,"x":204,"y":104},{"type":"mousemove","time":3263,"x":120,"y":102},{"type":"mousemove","time":3475,"x":106,"y":101},{"type":"mousedown","time":3621,"x":106,"y":101},{"type":"mouseup","time":3717,"x":106,"y":101},{"time":3718,"delay":2000,"type":"screenshot-auto"},{"type":"mousemove","time":4366,"x":107,"y":101},{"type":"mousemove","time":4578,"x":166,"y":104},{"type":"mousemove","time":4778,"x":169,"y":104},{"type":"mousemove","time":4991,"x":170,"y":104},{"type":"mousedown","time":5064,"x":170,"y":104},{"type":"mouseup","time":5208,"x":170,"y":104},{"time":5209,"delay":2000,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568030653772}] \ No newline at end of file diff --git a/test/runTest/actions/candlestick.json b/test/runTest/actions/candlestick.json new file mode 100644 index 0000000000..ff6d86d6fa --- /dev/null +++ b/test/runTest/actions/candlestick.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":326,"x":510,"y":580},{"type":"mousemove","time":462,"x":504,"y":580},{"type":"mousemove","time":673,"x":355,"y":578},{"type":"mousemove","time":887,"x":313,"y":582},{"type":"mouseup","time":1210,"x":313,"y":582},{"time":1211,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1979,"x":313,"y":582},{"type":"mousemove","time":2180,"x":454,"y":583},{"type":"mousemove","time":2385,"x":494,"y":577},{"type":"mousemove","time":2596,"x":514,"y":576},{"type":"mousemove","time":2803,"x":534,"y":575},{"type":"mousedown","time":3038,"x":534,"y":575},{"type":"mousemove","time":3114,"x":532,"y":575},{"type":"mousemove","time":3323,"x":288,"y":582},{"type":"mousemove","time":3540,"x":283,"y":582},{"type":"mouseup","time":3964,"x":283,"y":582},{"time":3965,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568030721632},{"name":"Action 2","ops":[{"type":"mousedown","time":536,"x":376,"y":40},{"type":"mouseup","time":660,"x":376,"y":40},{"time":661,"delay":1500,"type":"screenshot-auto"},{"type":"mousemove","time":1238,"x":378,"y":40},{"type":"mousemove","time":1439,"x":466,"y":39},{"type":"mousedown","time":1597,"x":466,"y":39},{"type":"mouseup","time":1713,"x":466,"y":39},{"time":1714,"delay":1500,"type":"screenshot-auto"},{"type":"mousedown","time":2472,"x":466,"y":39},{"type":"mouseup","time":2568,"x":466,"y":39},{"time":2569,"delay":1500,"type":"screenshot-auto"},{"type":"mousemove","time":2890,"x":465,"y":39},{"type":"mousemove","time":3091,"x":394,"y":37},{"type":"mousemove","time":3298,"x":388,"y":37},{"type":"mousemove","time":3624,"x":388,"y":37},{"type":"mousedown","time":3780,"x":388,"y":37},{"type":"mouseup","time":3880,"x":388,"y":37},{"time":3881,"delay":1500,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568030755367}] \ No newline at end of file diff --git a/test/runTest/actions/candlestickConnect.json b/test/runTest/actions/candlestickConnect.json new file mode 100644 index 0000000000..12469e87dd --- /dev/null +++ b/test/runTest/actions/candlestickConnect.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"screenshot","time":841},{"type":"mousemove","time":1016,"x":284,"y":93},{"type":"mousemove","time":1216,"x":317,"y":93},{"type":"mousemove","time":1424,"x":324,"y":92},{"type":"screenshot","time":2173},{"type":"mousemove","time":2435,"x":326,"y":92},{"type":"mousemove","time":2634,"x":431,"y":91},{"type":"mousemove","time":2842,"x":463,"y":90},{"type":"mousemove","time":4536,"x":463,"y":93},{"type":"mousemove","time":4736,"x":461,"y":267},{"type":"mousemove","time":4943,"x":460,"y":305},{"type":"screenshot","time":6077},{"type":"mousemove","time":6270,"x":456,"y":306},{"type":"mousemove","time":6471,"x":287,"y":306},{"type":"screenshot","time":7228},{"type":"mousemove","time":7739,"x":287,"y":307},{"type":"mousemove","time":7939,"x":237,"y":471},{"type":"mousemove","time":8140,"x":218,"y":500},{"type":"mousemove","time":8346,"x":209,"y":525},{"type":"screenshot","time":9388},{"type":"mousemove","time":9640,"x":212,"y":525},{"type":"mousemove","time":9840,"x":306,"y":533},{"type":"mousemove","time":10066,"x":309,"y":533},{"type":"screenshot","time":10933},{"type":"mousemove","time":11376,"x":308,"y":533},{"type":"mousemove","time":11582,"x":307,"y":533}],"scrollY":23,"scrollX":0,"timestamp":1568030772887},{"name":"Action 2","ops":[{"type":"mousedown","time":429,"x":448,"y":416},{"type":"mousemove","time":581,"x":439,"y":416},{"type":"mousemove","time":791,"x":326,"y":415},{"type":"mousemove","time":996,"x":307,"y":415},{"type":"mouseup","time":1358,"x":307,"y":415},{"time":1359,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":2237,"x":307,"y":415},{"type":"mousemove","time":2348,"x":299,"y":416},{"type":"mousemove","time":2549,"x":228,"y":420},{"type":"mouseup","time":2758,"x":212,"y":419},{"time":2759,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2764,"x":212,"y":419},{"type":"mousemove","time":2849,"x":216,"y":419},{"type":"mousemove","time":3049,"x":309,"y":409},{"type":"mousemove","time":3256,"x":337,"y":413},{"type":"mousedown","time":3692,"x":337,"y":413},{"type":"mousemove","time":3800,"x":334,"y":413},{"type":"mousemove","time":4009,"x":261,"y":421},{"type":"mousemove","time":4235,"x":228,"y":422},{"type":"mousemove","time":4445,"x":228,"y":422},{"type":"mouseup","time":4516,"x":228,"y":422},{"time":4517,"delay":400,"type":"screenshot-auto"}],"scrollY":23,"scrollX":0,"timestamp":1568030787469},{"name":"Action 3","ops":[{"type":"mousedown","time":956,"x":356,"y":33},{"type":"mouseup","time":1060,"x":356,"y":33},{"time":1061,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":1937,"x":356,"y":33},{"type":"mouseup","time":2021,"x":356,"y":33},{"time":2022,"delay":400,"type":"screenshot-auto"}],"scrollY":23,"scrollX":0,"timestamp":1568030794743},{"name":"Action 4","ops":[{"type":"mousedown","time":332,"x":501,"y":35},{"type":"mouseup","time":438,"x":501,"y":35},{"time":439,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":509,"x":501,"y":35},{"type":"mousemove","time":711,"x":365,"y":85},{"type":"mousemove","time":917,"x":365,"y":86},{"type":"mousemove","time":1026,"x":365,"y":83},{"type":"mousemove","time":1232,"x":361,"y":72},{"type":"mousedown","time":1339,"x":361,"y":72},{"type":"mousemove","time":1410,"x":364,"y":75},{"type":"mousemove","time":1611,"x":452,"y":115},{"type":"mousemove","time":1811,"x":471,"y":120},{"type":"mousemove","time":2018,"x":476,"y":122},{"type":"mouseup","time":2186,"x":476,"y":122},{"time":2187,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2761,"x":480,"y":119},{"type":"mousemove","time":2961,"x":516,"y":43},{"type":"mousemove","time":3169,"x":518,"y":34},{"type":"mousemove","time":3402,"x":519,"y":33},{"type":"mousedown","time":3420,"x":519,"y":33},{"type":"mouseup","time":3521,"x":519,"y":33},{"time":3522,"delay":400,"type":"screenshot-auto"}],"scrollY":23,"scrollX":0,"timestamp":1568030815847}] \ No newline at end of file diff --git a/test/runTest/actions/clip.json b/test/runTest/actions/clip.json new file mode 100644 index 0000000000..53e9f6ee66 --- /dev/null +++ b/test/runTest/actions/clip.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":447,"x":92,"y":75},{"type":"mouseup","time":559,"x":92,"y":75},{"time":560,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":749,"x":90,"y":75},{"type":"mousemove","time":949,"x":43,"y":75},{"type":"mousemove","time":1157,"x":34,"y":75},{"type":"mousedown","time":1225,"x":34,"y":75},{"type":"mouseup","time":1322,"x":34,"y":75},{"time":1323,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568880422331},{"name":"Action 2","ops":[{"type":"mousedown","time":442,"x":114,"y":110},{"type":"mouseup","time":519,"x":114,"y":110},{"time":520,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":562,"x":114,"y":110},{"type":"mousemove","time":763,"x":71,"y":108},{"type":"mousemove","time":971,"x":34,"y":106},{"type":"mousedown","time":1190,"x":34,"y":106},{"type":"mouseup","time":1272,"x":34,"y":106},{"time":1273,"delay":400,"type":"screenshot-auto"}],"scrollY":462,"scrollX":0,"timestamp":1568880431375},{"name":"Action 3","ops":[{"type":"mousedown","time":485,"x":107,"y":166},{"type":"mouseup","time":578,"x":107,"y":166},{"time":579,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":1324,"x":111,"y":165},{"type":"mousemove","time":1523,"x":169,"y":164},{"type":"mousemove","time":1729,"x":171,"y":164},{"type":"mousemove","time":1955,"x":81,"y":159},{"type":"mousemove","time":2156,"x":51,"y":166},{"type":"mousedown","time":2279,"x":41,"y":163},{"type":"mousemove","time":2364,"x":41,"y":163},{"type":"mouseup","time":2382,"x":41,"y":163},{"time":2383,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":3240,"x":52,"y":163},{"type":"mousemove","time":3441,"x":151,"y":165},{"type":"mousemove","time":3648,"x":195,"y":166},{"type":"mousemove","time":3808,"x":195,"y":167},{"type":"mousedown","time":4039,"x":195,"y":167},{"type":"mouseup","time":4163,"x":195,"y":167},{"time":4164,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":4608,"x":198,"y":166},{"type":"mousemove","time":4808,"x":243,"y":163},{"type":"mousemove","time":5017,"x":256,"y":163},{"type":"mousedown","time":5066,"x":256,"y":163},{"type":"mouseup","time":5156,"x":256,"y":163},{"time":5157,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":6210,"x":248,"y":163},{"type":"mousemove","time":6417,"x":204,"y":165},{"type":"mousedown","time":6550,"x":204,"y":165},{"type":"mouseup","time":6668,"x":204,"y":165},{"time":6669,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":7277,"x":204,"y":165},{"type":"mousemove","time":7477,"x":143,"y":165},{"type":"mousemove","time":7683,"x":121,"y":167},{"type":"mousedown","time":7819,"x":121,"y":167},{"type":"mouseup","time":7911,"x":121,"y":167},{"time":7912,"delay":1000,"type":"screenshot-auto"}],"scrollY":902,"scrollX":0,"timestamp":1568880510067},{"name":"Action 4","ops":[{"type":"mousedown","time":609,"x":126,"y":123},{"type":"mouseup","time":686,"x":126,"y":123},{"time":687,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":970,"x":124,"y":123},{"type":"mousemove","time":1171,"x":88,"y":122},{"type":"mousemove","time":1377,"x":7,"y":117},{"type":"mousemove","time":1588,"x":12,"y":118},{"type":"mousedown","time":1653,"x":12,"y":118},{"type":"mouseup","time":1744,"x":12,"y":118},{"time":1745,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":1937,"x":17,"y":121},{"type":"mousemove","time":2138,"x":305,"y":280},{"type":"mousemove","time":2338,"x":380,"y":323},{"type":"mousedown","time":2479,"x":400,"y":329},{"type":"mousemove","time":2538,"x":390,"y":329},{"type":"mousemove","time":2754,"x":212,"y":328},{"type":"mousemove","time":2961,"x":163,"y":325},{"type":"mouseup","time":3130,"x":163,"y":326},{"time":3131,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":3179,"x":163,"y":326},{"type":"mousemove","time":3189,"x":164,"y":325},{"type":"mousemove","time":3389,"x":181,"y":276},{"type":"mousedown","time":3512,"x":177,"y":275},{"type":"mousemove","time":3592,"x":229,"y":304},{"type":"mousemove","time":3810,"x":650,"y":408},{"type":"mousemove","time":4014,"x":719,"y":408},{"type":"mousemove","time":4189,"x":719,"y":407},{"type":"mouseup","time":4421,"x":719,"y":407},{"time":4422,"delay":200,"type":"screenshot-auto"}],"scrollY":1443,"scrollX":0,"timestamp":1568880857563},{"name":"Action 5","ops":[{"type":"mousemove","time":52,"x":401,"y":278},{"type":"mousemove","time":252,"x":375,"y":243},{"type":"mousemove","time":455,"x":365,"y":207},{"type":"mousemove","time":662,"x":365,"y":202},{"type":"mousedown","time":712,"x":365,"y":202},{"type":"mouseup","time":812,"x":365,"y":202},{"time":813,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":955,"x":366,"y":206},{"type":"mousemove","time":1161,"x":380,"y":278},{"type":"mousemove","time":1388,"x":374,"y":283},{"type":"mousedown","time":1578,"x":371,"y":285},{"type":"mousemove","time":1595,"x":371,"y":285},{"type":"mousemove","time":1829,"x":413,"y":287},{"type":"mousemove","time":2079,"x":421,"y":286},{"type":"mouseup","time":2133,"x":421,"y":286},{"time":2134,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":2739,"x":418,"y":282},{"type":"mousemove","time":2940,"x":391,"y":213},{"type":"mousemove","time":3147,"x":398,"y":199},{"type":"mousedown","time":3181,"x":398,"y":199},{"type":"mouseup","time":3280,"x":398,"y":199},{"time":3281,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":3507,"x":398,"y":200},{"type":"mousemove","time":3722,"x":342,"y":257},{"type":"mousemove","time":3948,"x":329,"y":264},{"type":"mousedown","time":4048,"x":329,"y":264},{"type":"mousemove","time":4125,"x":329,"y":264},{"type":"mousemove","time":4332,"x":380,"y":271},{"type":"mousemove","time":4549,"x":388,"y":273},{"type":"mouseup","time":4617,"x":388,"y":273},{"time":4618,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":5025,"x":378,"y":272},{"type":"mousemove","time":5228,"x":215,"y":145},{"type":"mousemove","time":5434,"x":143,"y":88},{"type":"mousemove","time":5751,"x":141,"y":102},{"type":"mousedown","time":5869,"x":141,"y":102},{"type":"mouseup","time":5968,"x":141,"y":102},{"time":5969,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":6843,"x":140,"y":102},{"type":"mousemove","time":7043,"x":119,"y":101},{"type":"mousemove","time":7244,"x":94,"y":100},{"type":"mousedown","time":7452,"x":75,"y":99},{"type":"mousemove","time":7472,"x":75,"y":99},{"type":"mouseup","time":7542,"x":75,"y":99},{"time":7543,"delay":200,"type":"screenshot-auto"}],"scrollY":1961,"scrollX":0,"timestamp":1568880882433},{"name":"Action 6","ops":[{"type":"mousedown","time":312,"x":367,"y":231},{"type":"mouseup","time":395,"x":367,"y":231},{"time":396,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":534,"x":366,"y":236},{"type":"mousemove","time":735,"x":336,"y":315},{"type":"mousemove","time":943,"x":325,"y":330},{"type":"mousedown","time":1010,"x":325,"y":330},{"type":"mousemove","time":1101,"x":327,"y":330},{"type":"mousemove","time":1301,"x":457,"y":340},{"type":"mousemove","time":1501,"x":468,"y":339},{"type":"mousemove","time":1702,"x":472,"y":341},{"type":"mousemove","time":1918,"x":499,"y":340},{"type":"mousemove","time":2126,"x":501,"y":340},{"type":"mousemove","time":2184,"x":498,"y":341},{"type":"mousemove","time":2392,"x":490,"y":343},{"type":"mouseup","time":2509,"x":490,"y":343},{"time":2510,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":2952,"x":488,"y":341},{"type":"mousemove","time":3152,"x":437,"y":241},{"type":"mousemove","time":3359,"x":397,"y":208},{"type":"mousedown","time":3594,"x":397,"y":210},{"type":"mousemove","time":3602,"x":397,"y":210},{"type":"mouseup","time":3693,"x":397,"y":210},{"time":3694,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":3836,"x":397,"y":212},{"type":"mousemove","time":4043,"x":401,"y":271},{"type":"mousemove","time":4253,"x":384,"y":300},{"type":"mousemove","time":4460,"x":382,"y":304},{"type":"mousemove","time":4586,"x":380,"y":305},{"type":"mousemove","time":4787,"x":356,"y":313},{"type":"mousedown","time":4925,"x":367,"y":314},{"type":"mousemove","time":4996,"x":367,"y":314},{"type":"mousemove","time":5212,"x":421,"y":315},{"type":"mousemove","time":5370,"x":421,"y":315},{"type":"mousemove","time":5585,"x":421,"y":314},{"type":"mouseup","time":5698,"x":421,"y":314},{"time":5699,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":5820,"x":421,"y":313},{"type":"mousemove","time":6020,"x":413,"y":276},{"type":"mousemove","time":6228,"x":402,"y":223},{"type":"mousedown","time":6468,"x":402,"y":222},{"type":"mousemove","time":6579,"x":402,"y":222},{"type":"mouseup","time":6897,"x":402,"y":222},{"time":6898,"delay":200,"type":"screenshot-auto"}],"scrollY":2429,"scrollX":0,"timestamp":1568880942095},{"name":"Action 7","ops":[{"type":"mousedown","time":373,"x":117,"y":170},{"type":"mouseup","time":471,"x":117,"y":170},{"time":472,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":696,"x":112,"y":170},{"type":"mousemove","time":896,"x":42,"y":166},{"type":"mousemove","time":1104,"x":40,"y":167},{"type":"mousedown","time":1321,"x":40,"y":167},{"type":"mouseup","time":1404,"x":40,"y":167},{"time":1405,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":1696,"x":45,"y":169},{"type":"mousemove","time":1897,"x":172,"y":177},{"type":"mousemove","time":2098,"x":178,"y":173},{"type":"mousedown","time":2272,"x":178,"y":173},{"type":"mousemove","time":2305,"x":178,"y":173},{"type":"mouseup","time":2359,"x":178,"y":173},{"time":2360,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":3047,"x":177,"y":173},{"type":"mousemove","time":3248,"x":132,"y":170},{"type":"mousedown","time":3372,"x":132,"y":170},{"type":"mouseup","time":3462,"x":132,"y":170},{"time":3463,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":3748,"x":126,"y":170},{"type":"mousemove","time":3949,"x":84,"y":170},{"type":"mousemove","time":4159,"x":65,"y":169},{"type":"mousemove","time":4390,"x":56,"y":171},{"type":"mousedown","time":4400,"x":56,"y":171},{"type":"mouseup","time":4474,"x":56,"y":171},{"time":4475,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":4674,"x":56,"y":171}],"scrollY":2881,"scrollX":0,"timestamp":1568880957974},{"name":"Action 8","ops":[{"type":"mousedown","time":703,"x":32,"y":63},{"type":"mouseup","time":950,"x":32,"y":63},{"time":951,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":1392,"x":39,"y":63},{"type":"mousemove","time":1600,"x":144,"y":67},{"type":"mousemove","time":1884,"x":103,"y":64},{"type":"mousedown","time":1903,"x":103,"y":64},{"type":"mousemove","time":2001,"x":102,"y":64},{"type":"mouseup","time":2010,"x":102,"y":64},{"time":2011,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":2526,"x":115,"y":66},{"type":"mousemove","time":2727,"x":249,"y":64},{"type":"mousemove","time":2927,"x":254,"y":63},{"type":"mousedown","time":3284,"x":254,"y":63},{"type":"mouseup","time":3403,"x":254,"y":63},{"time":3404,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":4761,"x":251,"y":63},{"type":"mousemove","time":4962,"x":131,"y":67},{"type":"mousemove","time":5163,"x":68,"y":66},{"type":"mousemove","time":5372,"x":50,"y":67},{"type":"mousedown","time":5383,"x":50,"y":67},{"type":"mouseup","time":5475,"x":50,"y":67},{"time":5476,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":5944,"x":62,"y":66},{"type":"mousemove","time":6144,"x":188,"y":60},{"type":"mousemove","time":6356,"x":190,"y":59},{"type":"mousedown","time":6508,"x":190,"y":66},{"type":"mousemove","time":6591,"x":190,"y":66},{"type":"mouseup","time":6613,"x":190,"y":66},{"time":6614,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":7182,"x":191,"y":67},{"type":"mousemove","time":7391,"x":193,"y":68}],"scrollY":3481,"scrollX":0,"timestamp":1568881004231},{"name":"Action 9","ops":[{"type":"mousemove","time":82,"x":111,"y":100},{"type":"mousemove","time":283,"x":117,"y":80},{"type":"mousemove","time":483,"x":118,"y":72},{"type":"mousedown","time":626,"x":118,"y":72},{"type":"mouseup","time":708,"x":118,"y":72},{"time":709,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":1184,"x":114,"y":72},{"type":"mousemove","time":1384,"x":56,"y":73},{"type":"mousemove","time":1585,"x":46,"y":72},{"type":"mousemove","time":1792,"x":37,"y":70},{"type":"mousedown","time":2261,"x":37,"y":70},{"type":"mouseup","time":2351,"x":37,"y":70},{"time":2352,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":2734,"x":38,"y":70},{"type":"mousemove","time":2935,"x":504,"y":304},{"type":"mousemove","time":3136,"x":613,"y":321},{"type":"mousedown","time":3252,"x":657,"y":323},{"type":"mousemove","time":3344,"x":657,"y":323},{"type":"mousemove","time":3553,"x":520,"y":319},{"type":"mousemove","time":3754,"x":415,"y":314},{"type":"mousemove","time":3964,"x":253,"y":312},{"type":"mousemove","time":4180,"x":241,"y":311},{"type":"mousemove","time":4396,"x":237,"y":311},{"type":"mouseup","time":4715,"x":237,"y":311},{"time":4716,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":4805,"x":232,"y":307},{"type":"mousemove","time":5008,"x":162,"y":167},{"type":"mousemove","time":5218,"x":142,"y":124},{"type":"mousemove","time":5421,"x":106,"y":70},{"type":"mousedown","time":5570,"x":103,"y":65},{"type":"mousemove","time":5631,"x":103,"y":65},{"type":"mouseup","time":5681,"x":103,"y":65},{"time":5682,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":5856,"x":104,"y":65},{"type":"mousemove","time":6155,"x":92,"y":64},{"type":"mousemove","time":6365,"x":13,"y":65},{"type":"mousemove","time":6616,"x":11,"y":65},{"type":"mousemove","time":6739,"x":13,"y":65},{"type":"mousedown","time":6869,"x":21,"y":65},{"type":"mousemove","time":6950,"x":21,"y":65},{"type":"mouseup","time":6992,"x":21,"y":65},{"time":6993,"delay":600,"type":"screenshot-auto"}],"scrollY":3976,"scrollX":0,"timestamp":1568881022338}] \ No newline at end of file diff --git a/test/runTest/actions/color-mix-aqi.json b/test/runTest/actions/color-mix-aqi.json new file mode 100644 index 0000000000..00e9b24b0b --- /dev/null +++ b/test/runTest/actions/color-mix-aqi.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":338,"x":728,"y":44},{"type":"mousemove","time":423,"x":728,"y":46},{"type":"mousemove","time":629,"x":726,"y":86},{"type":"mousemove","time":851,"x":728,"y":99},{"type":"mouseup","time":1247,"x":728,"y":99},{"time":1248,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1346,"x":730,"y":100},{"type":"mousemove","time":1546,"x":740,"y":115},{"type":"mousemove","time":1826,"x":741,"y":116},{"type":"mousedown","time":1943,"x":741,"y":116},{"type":"mousemove","time":2096,"x":741,"y":115},{"type":"mousemove","time":2297,"x":742,"y":88},{"type":"mousemove","time":2503,"x":746,"y":59},{"type":"mousemove","time":2710,"x":746,"y":59},{"type":"mouseup","time":3266,"x":746,"y":59},{"time":3267,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3476,"x":746,"y":61},{"type":"mousemove","time":3676,"x":704,"y":416},{"type":"mousemove","time":3880,"x":713,"y":433},{"type":"mousemove","time":4080,"x":735,"y":426},{"type":"mousemove","time":4313,"x":735,"y":426},{"type":"mousemove","time":4362,"x":735,"y":427},{"type":"mousemove","time":4562,"x":733,"y":431},{"type":"mousedown","time":4880,"x":733,"y":431},{"type":"mousemove","time":5033,"x":735,"y":433},{"type":"mousemove","time":5259,"x":744,"y":455},{"type":"mousemove","time":5465,"x":744,"y":460},{"type":"mousemove","time":5685,"x":744,"y":463},{"type":"mouseup","time":5848,"x":744,"y":463},{"time":5849,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5921,"x":745,"y":465},{"type":"mousemove","time":6150,"x":755,"y":487},{"type":"mousemove","time":6382,"x":752,"y":497},{"type":"mousedown","time":6390,"x":752,"y":497},{"type":"mousemove","time":6587,"x":753,"y":484},{"type":"mousemove","time":6799,"x":755,"y":455},{"type":"mousemove","time":7005,"x":757,"y":441},{"type":"mousemove","time":7217,"x":759,"y":435},{"type":"mouseup","time":7628,"x":759,"y":435},{"time":7629,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":8299,"x":758,"y":433},{"type":"mousemove","time":8500,"x":512,"y":76},{"type":"mousemove","time":8700,"x":495,"y":29},{"type":"mousemove","time":8917,"x":487,"y":13},{"type":"mousedown","time":9138,"x":487,"y":13},{"type":"mouseup","time":9229,"x":487,"y":13},{"time":9230,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":9850,"x":482,"y":13},{"type":"mousemove","time":10050,"x":460,"y":13},{"type":"mousedown","time":10319,"x":420,"y":14},{"type":"mousemove","time":10341,"x":420,"y":14},{"type":"mouseup","time":10453,"x":420,"y":14},{"time":10454,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":11020,"x":419,"y":14},{"type":"mousemove","time":11220,"x":376,"y":15},{"type":"mousemove","time":11433,"x":331,"y":7},{"type":"mousedown","time":11617,"x":329,"y":7},{"type":"mousemove","time":11634,"x":329,"y":7},{"type":"mouseup","time":11717,"x":329,"y":7},{"time":11718,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":11916,"x":329,"y":8},{"type":"mousemove","time":12116,"x":329,"y":9},{"type":"mousemove","time":12302,"x":329,"y":10},{"type":"mousemove","time":12502,"x":329,"y":10}],"scrollY":0,"scrollX":0,"timestamp":1568030947802}] \ No newline at end of file diff --git a/test/runTest/actions/connect-dynamic.json b/test/runTest/actions/connect-dynamic.json new file mode 100644 index 0000000000..068649eef0 --- /dev/null +++ b/test/runTest/actions/connect-dynamic.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"screenshot","time":1322},{"type":"mousemove","time":1700,"x":244,"y":298},{"type":"mousemove","time":1906,"x":260,"y":444},{"type":"mousemove","time":2106,"x":264,"y":482},{"type":"mousemove","time":2307,"x":268,"y":498},{"type":"mousemove","time":2425,"x":269,"y":499},{"type":"mousemove","time":2625,"x":269,"y":500},{"type":"screenshot","time":3349},{"type":"mousemove","time":3457,"x":276,"y":501},{"type":"mousemove","time":3657,"x":327,"y":507},{"type":"screenshot","time":4859}],"scrollY":0,"scrollX":0,"timestamp":1568030999009},{"name":"Action 2","ops":[{"type":"mousedown","time":558,"x":330,"y":7},{"type":"mouseup","time":678,"x":330,"y":7},{"time":679,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1839,"x":326,"y":8},{"type":"mousemove","time":2042,"x":267,"y":48},{"type":"mousemove","time":2243,"x":205,"y":81},{"type":"mousemove","time":2450,"x":205,"y":81},{"type":"screenshot","time":4024},{"type":"mousedown","time":5433,"x":205,"y":81},{"type":"mouseup","time":5527,"x":205,"y":81},{"time":5528,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":7016,"x":205,"y":81},{"type":"mouseup","time":7113,"x":205,"y":81},{"time":7114,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7714,"x":205,"y":84},{"type":"mousemove","time":7916,"x":233,"y":333},{"type":"mousemove","time":8116,"x":240,"y":396},{"type":"mousemove","time":8364,"x":243,"y":416},{"type":"mousemove","time":8564,"x":267,"y":461},{"type":"mousemove","time":8764,"x":277,"y":483},{"type":"mousemove","time":8971,"x":286,"y":497},{"type":"screenshot","time":10423},{"type":"mousemove","time":10706,"x":292,"y":497},{"type":"mousemove","time":10906,"x":338,"y":491},{"type":"mousemove","time":11116,"x":360,"y":487},{"type":"mousemove","time":11268,"x":361,"y":487},{"type":"mousemove","time":11469,"x":368,"y":485},{"type":"mousedown","time":11566,"x":368,"y":485},{"type":"mousemove","time":11651,"x":365,"y":485},{"type":"mousemove","time":11852,"x":271,"y":489},{"type":"mousemove","time":12052,"x":264,"y":490},{"type":"mouseup","time":12434,"x":264,"y":490},{"time":12435,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568031009000}] \ No newline at end of file diff --git a/test/runTest/actions/connect-manually.json b/test/runTest/actions/connect-manually.json new file mode 100644 index 0000000000..c247c30214 --- /dev/null +++ b/test/runTest/actions/connect-manually.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":684,"x":176,"y":189},{"type":"mousemove","time":897,"x":193,"y":190},{"type":"screenshot","time":1559},{"type":"mousemove","time":2386,"x":194,"y":190},{"type":"mousemove","time":2587,"x":260,"y":195},{"type":"mousemove","time":2793,"x":318,"y":198},{"type":"mousemove","time":3008,"x":459,"y":198},{"type":"mousemove","time":3217,"x":460,"y":198},{"type":"mousemove","time":4472,"x":465,"y":198},{"type":"mousemove","time":4672,"x":590,"y":194},{"type":"mousemove","time":4883,"x":632,"y":196},{"type":"mousemove","time":6013,"x":622,"y":198},{"type":"mousemove","time":6214,"x":375,"y":327},{"type":"mousemove","time":6415,"x":238,"y":446},{"type":"mousemove","time":6630,"x":208,"y":465},{"type":"screenshot","time":7409},{"type":"mousemove","time":7633,"x":212,"y":465},{"type":"mousemove","time":7834,"x":356,"y":469},{"type":"mousemove","time":8050,"x":404,"y":470},{"type":"mousemove","time":8262,"x":411,"y":470},{"type":"mousemove","time":8433,"x":412,"y":470},{"type":"screenshot","time":8939},{"type":"mousemove","time":9034,"x":415,"y":470},{"type":"mousemove","time":9235,"x":538,"y":467},{"type":"mousemove","time":9434,"x":619,"y":462},{"type":"mousemove","time":9641,"x":621,"y":461},{"type":"screenshot","time":10291}],"scrollY":0,"scrollX":0,"timestamp":1568048970794}] \ No newline at end of file diff --git a/test/runTest/actions/connect.json b/test/runTest/actions/connect.json new file mode 100644 index 0000000000..8b57e9776b --- /dev/null +++ b/test/runTest/actions/connect.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"screenshot","time":1275},{"type":"mousemove","time":1728,"x":216,"y":60},{"type":"mousemove","time":1928,"x":238,"y":166},{"type":"mousemove","time":2152,"x":231,"y":207},{"type":"mousemove","time":2447,"x":231,"y":207},{"type":"mousemove","time":3292,"x":231,"y":210},{"type":"mousemove","time":3495,"x":354,"y":496},{"type":"mousemove","time":3696,"x":355,"y":501},{"type":"mousemove","time":3913,"x":375,"y":508},{"type":"mousemove","time":4611,"x":375,"y":507},{"type":"mousemove","time":4820,"x":381,"y":463},{"type":"mousemove","time":5022,"x":381,"y":462},{"type":"mousemove","time":6352,"x":381,"y":461},{"type":"mousemove","time":6557,"x":368,"y":440},{"type":"mousemove","time":6757,"x":368,"y":440},{"type":"mousedown","time":6903,"x":368,"y":440},{"type":"mousemove","time":6926,"x":368,"y":440},{"type":"mousemove","time":7126,"x":369,"y":468},{"type":"mousemove","time":7326,"x":370,"y":491},{"type":"mousemove","time":7526,"x":371,"y":516},{"type":"mousemove","time":7736,"x":371,"y":523},{"type":"mouseup","time":7863,"x":371,"y":523},{"time":7864,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":8113,"x":371,"y":523},{"type":"mousemove","time":8563,"x":374,"y":522},{"type":"mousemove","time":8763,"x":583,"y":416},{"type":"mousemove","time":8971,"x":602,"y":393},{"type":"mousemove","time":9175,"x":621,"y":377},{"type":"mousemove","time":9382,"x":623,"y":377},{"type":"mousemove","time":9590,"x":623,"y":376}],"scrollY":0,"scrollX":0,"timestamp":1568033293470}] \ No newline at end of file diff --git a/test/runTest/actions/connect2.json b/test/runTest/actions/connect2.json new file mode 100644 index 0000000000..a68ac0add0 --- /dev/null +++ b/test/runTest/actions/connect2.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"screenshot","time":509},{"type":"mousemove","time":705,"x":343,"y":75},{"type":"mousemove","time":918,"x":338,"y":113},{"type":"mousemove","time":1138,"x":336,"y":127},{"type":"mousemove","time":1374,"x":336,"y":127},{"type":"mousemove","time":1574,"x":336,"y":127},{"type":"screenshot","time":2222},{"type":"mousemove","time":2640,"x":336,"y":126},{"type":"mousemove","time":2841,"x":336,"y":126},{"type":"mousemove","time":2875,"x":336,"y":125},{"type":"mousemove","time":3075,"x":335,"y":79},{"type":"mousemove","time":3283,"x":339,"y":42},{"type":"mousemove","time":3492,"x":330,"y":38},{"type":"mousemove","time":3699,"x":329,"y":40},{"type":"mousemove","time":3899,"x":328,"y":42},{"type":"mousemove","time":4099,"x":326,"y":43},{"type":"mousedown","time":4286,"x":326,"y":44},{"type":"mousemove","time":4308,"x":326,"y":44},{"type":"mousemove","time":4521,"x":326,"y":63},{"type":"mousemove","time":4738,"x":325,"y":100},{"type":"mousemove","time":4960,"x":324,"y":113},{"type":"mousemove","time":5162,"x":324,"y":128},{"type":"mousemove","time":5362,"x":323,"y":139},{"type":"mousemove","time":5600,"x":323,"y":142},{"type":"mouseup","time":5963,"x":323,"y":142},{"time":5964,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6088,"x":324,"y":143},{"type":"mousemove","time":6324,"x":332,"y":156},{"type":"mousedown","time":6668,"x":332,"y":156},{"type":"mousemove","time":6789,"x":332,"y":153},{"type":"mousemove","time":7029,"x":336,"y":100},{"type":"mousemove","time":7243,"x":338,"y":77},{"type":"mousemove","time":7482,"x":338,"y":76},{"type":"mousemove","time":7704,"x":339,"y":72},{"type":"mousemove","time":7806,"x":339,"y":72},{"type":"mouseup","time":7833,"x":339,"y":72},{"time":7834,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":8121,"x":339,"y":75},{"type":"mousemove","time":8322,"x":367,"y":92},{"type":"mousemove","time":8415,"x":367,"y":92},{"type":"mousemove","time":8620,"x":259,"y":58},{"type":"mousemove","time":8822,"x":198,"y":33},{"type":"mousemove","time":9033,"x":200,"y":22},{"type":"mousemove","time":9262,"x":200,"y":18},{"type":"mousedown","time":9385,"x":200,"y":18},{"type":"mouseup","time":9455,"x":200,"y":18},{"time":9456,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":10047,"x":201,"y":18},{"type":"mousemove","time":10269,"x":252,"y":12},{"type":"mousemove","time":10501,"x":262,"y":10},{"type":"mousedown","time":10587,"x":262,"y":10},{"type":"mouseup","time":10690,"x":262,"y":10},{"time":10691,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":11666,"x":261,"y":10},{"type":"mousemove","time":11867,"x":165,"y":8},{"type":"mousemove","time":12082,"x":136,"y":7},{"type":"mousedown","time":12300,"x":136,"y":7},{"type":"mousemove","time":12306,"x":136,"y":7},{"type":"mouseup","time":12401,"x":136,"y":7},{"time":12402,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":12514,"x":136,"y":7}],"scrollY":0,"scrollX":0,"timestamp":1568033423281}] \ No newline at end of file diff --git a/test/runTest/actions/css-transform.json b/test/runTest/actions/css-transform.json new file mode 100644 index 0000000000..5b038eecf2 --- /dev/null +++ b/test/runTest/actions/css-transform.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":342,"x":354,"y":178},{"type":"mouseup","time":447,"x":354,"y":178},{"time":448,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":618,"x":361,"y":179},{"type":"mousemove","time":819,"x":404,"y":193},{"type":"mousemove","time":1028,"x":411,"y":201},{"type":"mousedown","time":1226,"x":411,"y":201},{"type":"mouseup","time":1319,"x":411,"y":201},{"time":1320,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1453,"x":410,"y":202},{"type":"mousemove","time":1654,"x":380,"y":234},{"type":"mousemove","time":1861,"x":375,"y":241},{"type":"mousedown","time":2120,"x":375,"y":242},{"type":"mousemove","time":2135,"x":375,"y":242},{"type":"mouseup","time":2211,"x":375,"y":242},{"time":2212,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568034220175},{"name":"Action 2","ops":[{"type":"screenshot","time":928},{"type":"mousemove","time":1113,"x":305,"y":276},{"type":"mousemove","time":1313,"x":487,"y":259},{"type":"mousemove","time":1525,"x":489,"y":257},{"type":"mousemove","time":1739,"x":502,"y":256},{"type":"mousemove","time":1940,"x":506,"y":255},{"type":"mousemove","time":2147,"x":534,"y":248},{"type":"screenshot","time":3180},{"type":"mousemove","time":3281,"x":532,"y":250},{"type":"mousemove","time":3482,"x":533,"y":334},{"type":"mousemove","time":3682,"x":520,"y":353},{"type":"mousemove","time":3889,"x":515,"y":355},{"type":"mousedown","time":3927,"x":515,"y":355},{"type":"mouseup","time":4007,"x":515,"y":355},{"time":4008,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4197,"x":519,"y":354},{"type":"mousemove","time":4398,"x":602,"y":325},{"type":"mousemove","time":4598,"x":629,"y":320},{"type":"mousemove","time":4809,"x":633,"y":319},{"type":"mousedown","time":4915,"x":633,"y":319},{"type":"mouseup","time":4997,"x":633,"y":319},{"time":4998,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5096,"x":633,"y":319},{"type":"mousemove","time":5252,"x":632,"y":319},{"type":"mousemove","time":5453,"x":629,"y":319},{"type":"mousemove","time":5662,"x":627,"y":319}],"scrollY":340,"scrollX":0,"timestamp":1568033542068},{"name":"Action 3","ops":[{"type":"screenshot","time":815},{"type":"mousemove","time":1037,"x":458,"y":135},{"type":"mousemove","time":1238,"x":374,"y":275},{"type":"mousemove","time":1452,"x":358,"y":309},{"type":"mousemove","time":2685,"x":361,"y":307},{"type":"mousemove","time":2886,"x":523,"y":218},{"type":"mousemove","time":3086,"x":562,"y":181},{"type":"mousemove","time":3288,"x":561,"y":171},{"type":"mousemove","time":3505,"x":553,"y":165},{"type":"mousedown","time":3678,"x":553,"y":165},{"type":"mouseup","time":3805,"x":553,"y":165},{"time":3806,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4553,"x":553,"y":166},{"type":"mousemove","time":4755,"x":504,"y":278},{"type":"mousemove","time":4955,"x":501,"y":318},{"type":"mousedown","time":5140,"x":502,"y":325},{"type":"mousemove","time":5163,"x":502,"y":325},{"type":"mouseup","time":5238,"x":502,"y":325},{"time":5239,"delay":400,"type":"screenshot-auto"}],"scrollY":1041,"scrollX":0,"timestamp":1568033560023},{"name":"Action 4","ops":[{"type":"mousemove","time":1069,"x":329,"y":300},{"type":"mousemove","time":1269,"x":482,"y":331},{"type":"mousemove","time":1481,"x":487,"y":332},{"type":"screenshot","time":2448},{"type":"mousemove","time":2653,"x":486,"y":333},{"type":"mousemove","time":2855,"x":369,"y":468},{"type":"mousemove","time":3055,"x":352,"y":473},{"type":"mousemove","time":3284,"x":358,"y":462},{"type":"mousedown","time":4233,"x":358,"y":462},{"type":"mouseup","time":4310,"x":358,"y":462},{"time":4311,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4603,"x":363,"y":462},{"type":"mousemove","time":4804,"x":472,"y":478},{"type":"mousemove","time":5004,"x":477,"y":478},{"type":"mousemove","time":5214,"x":474,"y":499},{"type":"mousedown","time":5863,"x":474,"y":499},{"type":"mouseup","time":5959,"x":474,"y":499},{"time":5960,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6330,"x":475,"y":499},{"type":"mousemove","time":6531,"x":559,"y":511},{"type":"mousemove","time":6731,"x":602,"y":519},{"type":"mousemove","time":6931,"x":608,"y":523},{"type":"mousemove","time":7512,"x":606,"y":521},{"type":"mousemove","time":7721,"x":500,"y":495},{"type":"mousemove","time":7921,"x":496,"y":478},{"type":"mousemove","time":8128,"x":485,"y":468},{"type":"mousedown","time":8695,"x":485,"y":468},{"type":"mouseup","time":8797,"x":485,"y":468},{"time":8798,"delay":400,"type":"screenshot-auto"}],"scrollY":1653,"scrollX":0,"timestamp":1568033626802}] \ No newline at end of file diff --git a/test/runTest/actions/custom-children-remove.json b/test/runTest/actions/custom-children-remove.json new file mode 100644 index 0000000000..b8f3bd9f53 --- /dev/null +++ b/test/runTest/actions/custom-children-remove.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":428,"x":208,"y":12},{"type":"mouseup","time":562,"x":208,"y":12},{"time":563,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":630,"x":209,"y":12},{"type":"mousemove","time":830,"x":282,"y":9},{"type":"mousedown","time":1077,"x":282,"y":9},{"type":"mouseup","time":1178,"x":282,"y":9},{"time":1179,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1283,"x":282,"y":9},{"type":"mousemove","time":1483,"x":323,"y":13},{"type":"mousemove","time":1694,"x":344,"y":11},{"type":"mousedown","time":1812,"x":344,"y":11},{"type":"mouseup","time":1913,"x":344,"y":11},{"time":1914,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1967,"x":346,"y":11},{"type":"mousemove","time":2168,"x":403,"y":16},{"type":"mousedown","time":2396,"x":403,"y":16},{"type":"mouseup","time":2482,"x":403,"y":16},{"time":2483,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2536,"x":404,"y":16},{"type":"mousemove","time":2736,"x":468,"y":9},{"type":"mousemove","time":2945,"x":478,"y":10},{"type":"mousedown","time":2971,"x":478,"y":10},{"type":"mouseup","time":3054,"x":478,"y":10},{"time":3055,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3098,"x":478,"y":10},{"type":"mousemove","time":3298,"x":533,"y":11},{"type":"mousedown","time":3496,"x":535,"y":11},{"type":"mousemove","time":3514,"x":535,"y":11},{"type":"mouseup","time":3580,"x":535,"y":11},{"time":3581,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3639,"x":536,"y":11},{"type":"mousemove","time":3839,"x":617,"y":12},{"type":"mousedown","time":3988,"x":617,"y":12},{"type":"mouseup","time":4087,"x":617,"y":12},{"time":4088,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4903,"x":617,"y":12}],"scrollY":0,"scrollX":0,"timestamp":1568034003398}] \ No newline at end of file diff --git a/test/runTest/actions/custom-hexbin.json b/test/runTest/actions/custom-hexbin.json new file mode 100644 index 0000000000..d6a49eddbb --- /dev/null +++ b/test/runTest/actions/custom-hexbin.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":355,"x":668,"y":85},{"type":"mousemove","time":518,"x":664,"y":85},{"type":"mousemove","time":724,"x":611,"y":93},{"type":"mousemove","time":1152,"x":554,"y":98},{"type":"mouseup","time":1824,"x":554,"y":98},{"time":1825,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2275,"x":554,"y":97},{"type":"mousemove","time":2478,"x":556,"y":88},{"type":"mousemove","time":2678,"x":556,"y":87},{"type":"mousemove","time":2778,"x":555,"y":87},{"type":"mousemove","time":2979,"x":551,"y":86},{"type":"mousedown","time":3128,"x":551,"y":86},{"type":"mousemove","time":3194,"x":552,"y":86},{"type":"mousemove","time":3394,"x":623,"y":87},{"type":"mousemove","time":3595,"x":624,"y":87},{"type":"mouseup","time":3976,"x":624,"y":87},{"time":3977,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4720,"x":624,"y":86},{"type":"mousemove","time":4921,"x":625,"y":83},{"type":"mousedown","time":5114,"x":625,"y":83},{"type":"mousemove","time":5202,"x":625,"y":83},{"type":"mousemove","time":5402,"x":674,"y":83},{"type":"mouseup","time":5681,"x":675,"y":83},{"time":5682,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5704,"x":675,"y":83},{"type":"mousemove","time":5755,"x":675,"y":83},{"type":"mousemove","time":5955,"x":674,"y":84}],"scrollY":33,"scrollX":0,"timestamp":1568034024742}] \ No newline at end of file diff --git a/test/runTest/actions/custom.json b/test/runTest/actions/custom.json new file mode 100644 index 0000000000..7e80989310 --- /dev/null +++ b/test/runTest/actions/custom.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":408,"x":81,"y":475},{"type":"mousemove","time":570,"x":85,"y":475},{"type":"mousemove","time":770,"x":209,"y":479},{"type":"mouseup","time":1011,"x":209,"y":479},{"time":1012,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":1403,"x":209,"y":479},{"type":"mousemove","time":1537,"x":210,"y":478},{"type":"mousemove","time":1738,"x":322,"y":473},{"type":"mousemove","time":1945,"x":325,"y":473},{"type":"mousemove","time":2155,"x":326,"y":474},{"type":"mouseup","time":2168,"x":326,"y":474},{"time":2169,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2271,"x":326,"y":474},{"type":"mousedown","time":2520,"x":326,"y":474},{"type":"mousemove","time":2605,"x":327,"y":474},{"type":"mousemove","time":2806,"x":621,"y":480},{"type":"mousemove","time":3012,"x":631,"y":480},{"type":"mouseup","time":3269,"x":631,"y":480},{"time":3270,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568035195567},{"name":"Action 2","ops":[{"type":"mousedown","time":344,"x":458,"y":537},{"type":"mousemove","time":423,"x":457,"y":537},{"type":"mousemove","time":624,"x":310,"y":538},{"type":"mousemove","time":833,"x":300,"y":540},{"type":"mouseup","time":939,"x":300,"y":540},{"time":940,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1625,"x":305,"y":540},{"type":"mousemove","time":1830,"x":384,"y":535},{"type":"mousemove","time":2043,"x":368,"y":534},{"type":"mousemove","time":2308,"x":368,"y":534},{"type":"mousedown","time":2321,"x":368,"y":534},{"type":"mousemove","time":2508,"x":430,"y":524},{"type":"mousemove","time":2709,"x":613,"y":516},{"type":"mousemove","time":2909,"x":659,"y":519},{"type":"mousemove","time":3118,"x":682,"y":517},{"type":"mousemove","time":3368,"x":686,"y":517},{"type":"mouseup","time":3436,"x":686,"y":517},{"time":3437,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3676,"x":685,"y":512},{"type":"mousemove","time":3877,"x":498,"y":192},{"type":"mousemove","time":4077,"x":437,"y":106},{"type":"mousemove","time":4280,"x":387,"y":72},{"type":"mousemove","time":4501,"x":384,"y":71},{"type":"mousedown","time":4618,"x":384,"y":71},{"type":"mouseup","time":4719,"x":384,"y":71},{"time":4720,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5562,"x":386,"y":71},{"type":"mousemove","time":5768,"x":431,"y":68},{"type":"mousedown","time":5985,"x":431,"y":68},{"type":"mouseup","time":6086,"x":431,"y":68},{"time":6087,"delay":400,"type":"screenshot-auto"}],"scrollY":1749,"scrollX":0,"timestamp":1568035212695},{"name":"Action 3","ops":[{"type":"screenshot","time":1787},{"type":"mousedown","time":2426,"x":408,"y":89},{"type":"mouseup","time":2504,"x":408,"y":89},{"time":2505,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":3672,"x":408,"y":89},{"type":"mouseup","time":3754,"x":408,"y":89},{"time":3755,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4015,"x":416,"y":99},{"type":"mousemove","time":4216,"x":677,"y":586},{"type":"mousemove","time":4417,"x":696,"y":564},{"type":"mousemove","time":4624,"x":711,"y":556},{"type":"mousemove","time":4840,"x":719,"y":554},{"type":"mousedown","time":5007,"x":719,"y":553},{"type":"mousemove","time":5105,"x":719,"y":553},{"type":"mousemove","time":5117,"x":717,"y":554},{"type":"mousemove","time":5317,"x":613,"y":548},{"type":"mousemove","time":5517,"x":511,"y":548},{"type":"mousemove","time":5724,"x":406,"y":555},{"type":"mousemove","time":5935,"x":312,"y":549},{"type":"mouseup","time":6333,"x":312,"y":549},{"time":6334,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6543,"x":309,"y":550},{"type":"mousemove","time":6750,"x":304,"y":551},{"type":"mousemove","time":6984,"x":323,"y":549},{"type":"mousemove","time":7194,"x":322,"y":549},{"type":"mousemove","time":7394,"x":318,"y":549},{"type":"mousemove","time":7594,"x":264,"y":556},{"type":"mousemove","time":7800,"x":255,"y":557},{"type":"mousedown","time":7855,"x":255,"y":557},{"type":"mousemove","time":8010,"x":308,"y":555},{"type":"mousemove","time":8211,"x":522,"y":557},{"type":"mousemove","time":8421,"x":577,"y":556},{"type":"mouseup","time":8854,"x":577,"y":556},{"time":8855,"delay":400,"type":"screenshot-auto"}],"scrollY":2309,"scrollX":0,"timestamp":1568035234459},{"name":"Action 4","ops":[{"type":"mousedown","time":392,"x":485,"y":521},{"type":"mousemove","time":487,"x":477,"y":520},{"type":"mousemove","time":690,"x":396,"y":521},{"type":"mousemove","time":895,"x":315,"y":522},{"type":"mouseup","time":1150,"x":315,"y":522},{"time":1151,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1403,"x":315,"y":521},{"type":"mousemove","time":1604,"x":221,"y":201},{"type":"mousemove","time":1812,"x":176,"y":58},{"type":"mousemove","time":2004,"x":170,"y":48},{"type":"mousemove","time":2212,"x":174,"y":52},{"type":"mousedown","time":2335,"x":174,"y":52},{"type":"mouseup","time":2469,"x":174,"y":52},{"time":2470,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2499,"x":175,"y":52},{"type":"mousemove","time":2699,"x":247,"y":52},{"type":"mousemove","time":2997,"x":247,"y":52},{"type":"mousedown","time":3049,"x":247,"y":52},{"type":"mouseup","time":3138,"x":247,"y":52},{"time":3139,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3212,"x":251,"y":52},{"type":"mousemove","time":3413,"x":304,"y":58},{"type":"mousemove","time":3620,"x":320,"y":58},{"type":"mousedown","time":3669,"x":320,"y":58},{"type":"mouseup","time":3775,"x":320,"y":58},{"time":3776,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3980,"x":323,"y":58},{"type":"mousemove","time":4180,"x":376,"y":64},{"type":"mousedown","time":4360,"x":376,"y":64},{"type":"mousemove","time":4387,"x":376,"y":64},{"type":"mouseup","time":4470,"x":376,"y":64},{"time":4471,"delay":400,"type":"screenshot-auto"}],"scrollY":2916,"scrollX":0,"timestamp":1568035317710},{"name":"Action 5","ops":[{"type":"mousedown","time":448,"x":717,"y":482},{"type":"mousemove","time":556,"x":712,"y":482},{"type":"mousemove","time":756,"x":493,"y":483},{"type":"mousemove","time":957,"x":407,"y":481},{"type":"mousemove","time":1158,"x":355,"y":479},{"type":"mouseup","time":1415,"x":355,"y":479},{"time":1416,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":2050,"x":355,"y":479},{"type":"mousemove","time":2176,"x":345,"y":480},{"type":"mousemove","time":2382,"x":175,"y":486},{"type":"mousemove","time":2599,"x":161,"y":486},{"type":"mousemove","time":2725,"x":161,"y":486},{"type":"mousemove","time":2933,"x":153,"y":487},{"type":"mouseup","time":3205,"x":153,"y":487},{"time":3206,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3542,"x":152,"y":487},{"type":"mousemove","time":3744,"x":132,"y":485},{"type":"mousedown","time":3901,"x":130,"y":485},{"type":"mousemove","time":3944,"x":131,"y":485},{"type":"mousemove","time":4144,"x":267,"y":485},{"type":"mousemove","time":4344,"x":278,"y":484},{"type":"mousemove","time":4552,"x":303,"y":482},{"type":"mouseup","time":4705,"x":303,"y":482},{"time":4706,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5380,"x":305,"y":482},{"type":"mousemove","time":5587,"x":340,"y":475},{"type":"mousemove","time":5780,"x":337,"y":475},{"type":"mousemove","time":5986,"x":333,"y":476},{"type":"mousemove","time":6236,"x":333,"y":477},{"type":"mousemove","time":6437,"x":333,"y":477},{"type":"mousedown","time":6544,"x":333,"y":477},{"type":"mousemove","time":6653,"x":339,"y":477},{"type":"mousemove","time":6862,"x":668,"y":473},{"type":"mousemove","time":7080,"x":684,"y":473},{"type":"mousemove","time":7354,"x":684,"y":473},{"type":"mouseup","time":7730,"x":684,"y":473},{"time":7731,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7888,"x":678,"y":473},{"type":"mousemove","time":8088,"x":639,"y":472},{"type":"mousedown","time":8265,"x":620,"y":474},{"type":"mousemove","time":8296,"x":620,"y":474},{"type":"mousemove","time":8548,"x":732,"y":473},{"type":"mouseup","time":8782,"x":732,"y":473},{"time":8783,"delay":400,"type":"screenshot-auto"}],"scrollY":3541,"scrollX":0,"timestamp":1568035375040}] \ No newline at end of file diff --git a/test/runTest/actions/dataZoom-action.json b/test/runTest/actions/dataZoom-action.json new file mode 100644 index 0000000000..0d3acbeddd --- /dev/null +++ b/test/runTest/actions/dataZoom-action.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":367,"x":36,"y":54},{"type":"mouseup","time":464,"x":36,"y":54},{"time":465,"delay":1100,"type":"screenshot-auto"},{"type":"mousemove","time":2032,"x":36,"y":54},{"type":"mousemove","time":2232,"x":160,"y":56},{"type":"mousedown","time":2399,"x":160,"y":56},{"type":"mouseup","time":2497,"x":160,"y":56},{"time":2498,"delay":1100,"type":"screenshot-auto"},{"type":"mousemove","time":3623,"x":163,"y":56},{"type":"mousemove","time":3823,"x":249,"y":59},{"type":"mousemove","time":4070,"x":276,"y":59},{"type":"mousedown","time":4264,"x":276,"y":59},{"type":"mouseup","time":4349,"x":276,"y":59},{"time":4350,"delay":1100,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568035640740},{"name":"Action 2","ops":[{"type":"mousedown","time":851,"x":92,"y":201},{"type":"mouseup","time":883,"x":92,"y":201},{"time":884,"delay":1100,"type":"screenshot-auto"},{"type":"mousemove","time":1525,"x":96,"y":201},{"type":"mousemove","time":1727,"x":206,"y":205},{"type":"mousemove","time":1961,"x":206,"y":205},{"type":"mousemove","time":2162,"x":206,"y":205},{"type":"mousedown","time":2237,"x":206,"y":205},{"type":"mouseup","time":2372,"x":206,"y":205},{"time":2373,"delay":1100,"type":"screenshot-auto"},{"type":"mousemove","time":3227,"x":207,"y":205},{"type":"mousemove","time":3428,"x":352,"y":200},{"type":"mousemove","time":3636,"x":359,"y":202},{"type":"mousedown","time":3704,"x":359,"y":202},{"type":"mouseup","time":3812,"x":359,"y":202},{"time":3813,"delay":1100,"type":"screenshot-auto"},{"type":"mousemove","time":4457,"x":360,"y":202},{"type":"mousemove","time":4657,"x":520,"y":203},{"type":"mousedown","time":4907,"x":520,"y":203},{"type":"mouseup","time":5012,"x":520,"y":203},{"time":5013,"delay":1100,"type":"screenshot-auto"},{"type":"mousemove","time":5829,"x":515,"y":203},{"type":"mousemove","time":6030,"x":281,"y":222},{"type":"mousemove","time":6242,"x":169,"y":233},{"type":"mousedown","time":6442,"x":163,"y":237},{"type":"mousemove","time":6449,"x":163,"y":237},{"type":"mouseup","time":6541,"x":163,"y":237},{"time":6542,"delay":1100,"type":"screenshot-auto"},{"type":"mousemove","time":7196,"x":169,"y":237},{"type":"mousemove","time":7397,"x":298,"y":238},{"type":"mousedown","time":7735,"x":298,"y":238},{"type":"mouseup","time":7825,"x":298,"y":238},{"time":7826,"delay":1100,"type":"screenshot-auto"},{"type":"mousemove","time":8636,"x":298,"y":241},{"type":"mousemove","time":8837,"x":280,"y":284},{"type":"mousemove","time":9051,"x":280,"y":284},{"type":"mousedown","time":9234,"x":284,"y":274},{"type":"mousemove","time":9252,"x":284,"y":274},{"type":"mouseup","time":9334,"x":284,"y":274},{"time":9335,"delay":1100,"type":"screenshot-auto"},{"type":"mousemove","time":9873,"x":288,"y":274},{"type":"mousemove","time":10074,"x":419,"y":273},{"type":"mousemove","time":10290,"x":433,"y":272},{"type":"mousedown","time":10474,"x":433,"y":272},{"type":"mouseup","time":10541,"x":433,"y":272},{"time":10542,"delay":1100,"type":"screenshot-auto"}],"scrollY":292,"scrollX":0,"timestamp":1568035750793},{"name":"Action 3","ops":[{"type":"mousedown","time":471,"x":55,"y":145},{"type":"mouseup","time":554,"x":55,"y":145},{"time":555,"delay":1100,"type":"screenshot-auto"},{"type":"mousemove","time":1440,"x":60,"y":145},{"type":"mousemove","time":1640,"x":168,"y":146},{"type":"mousemove","time":1873,"x":186,"y":142},{"type":"mousedown","time":2062,"x":186,"y":142},{"type":"mouseup","time":2176,"x":186,"y":142},{"time":2177,"delay":1100,"type":"screenshot-auto"},{"type":"mousemove","time":2526,"x":192,"y":142},{"type":"mousemove","time":2725,"x":296,"y":149},{"type":"mousemove","time":2925,"x":407,"y":144},{"type":"mousemove","time":3125,"x":409,"y":144},{"type":"mousedown","time":3341,"x":409,"y":144},{"type":"mouseup","time":3424,"x":409,"y":144},{"time":3425,"delay":1100,"type":"screenshot-auto"},{"type":"mousemove","time":3793,"x":417,"y":144},{"type":"mousemove","time":3996,"x":532,"y":144},{"type":"mousemove","time":4196,"x":545,"y":142},{"type":"mousedown","time":4494,"x":545,"y":142},{"type":"mouseup","time":4581,"x":545,"y":142},{"time":4582,"delay":1100,"type":"screenshot-auto"},{"type":"mousemove","time":4979,"x":544,"y":142},{"type":"mousemove","time":5180,"x":213,"y":180},{"type":"mousemove","time":5380,"x":76,"y":193},{"type":"mousemove","time":5503,"x":76,"y":192},{"type":"mousedown","time":5669,"x":77,"y":190},{"type":"mousemove","time":5703,"x":77,"y":190},{"type":"mouseup","time":5736,"x":77,"y":190},{"time":5737,"delay":1100,"type":"screenshot-auto"},{"type":"mousemove","time":6167,"x":78,"y":190},{"type":"mousemove","time":6369,"x":214,"y":188},{"type":"mousemove","time":6569,"x":221,"y":187},{"type":"mousedown","time":6697,"x":221,"y":187},{"type":"mousemove","time":6770,"x":221,"y":187},{"type":"mouseup","time":6813,"x":221,"y":187},{"time":6814,"delay":1100,"type":"screenshot-auto"},{"type":"mousemove","time":7282,"x":220,"y":187},{"type":"mousemove","time":7483,"x":188,"y":226},{"type":"mousemove","time":7683,"x":188,"y":226},{"type":"mousedown","time":7882,"x":188,"y":226},{"type":"mouseup","time":7935,"x":188,"y":226},{"time":7936,"delay":1100,"type":"screenshot-auto"},{"type":"mousemove","time":8429,"x":188,"y":227},{"type":"mousemove","time":8629,"x":193,"y":252},{"type":"mousemove","time":8837,"x":193,"y":257},{"type":"mousedown","time":9022,"x":193,"y":257},{"type":"mouseup","time":9107,"x":193,"y":257},{"time":9108,"delay":1100,"type":"screenshot-auto"}],"scrollY":752,"scrollX":0,"timestamp":1568035780107},{"name":"Action 4","ops":[{"type":"mousedown","time":345,"x":68,"y":344},{"type":"mouseup","time":442,"x":68,"y":344},{"time":443,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":615,"x":68,"y":344},{"type":"mousemove","time":815,"x":230,"y":344},{"type":"mousemove","time":1031,"x":235,"y":343},{"type":"mousedown","time":1175,"x":235,"y":343},{"type":"mouseup","time":1275,"x":235,"y":343},{"time":1276,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1546,"x":252,"y":345},{"type":"mousemove","time":1746,"x":393,"y":348},{"type":"mousemove","time":1971,"x":400,"y":348},{"type":"mousedown","time":2032,"x":400,"y":348},{"type":"mouseup","time":2130,"x":400,"y":348},{"time":2131,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2197,"x":400,"y":347},{"type":"mousemove","time":2397,"x":423,"y":347},{"type":"mousemove","time":2610,"x":552,"y":339},{"type":"mousedown","time":2861,"x":552,"y":339},{"type":"mouseup","time":2979,"x":552,"y":339},{"time":2980,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3315,"x":551,"y":339},{"type":"mousemove","time":3516,"x":106,"y":403},{"type":"mousemove","time":3717,"x":22,"y":407},{"type":"mousemove","time":3936,"x":53,"y":388},{"type":"mousedown","time":4094,"x":53,"y":388},{"type":"mouseup","time":4162,"x":53,"y":388},{"time":4163,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4447,"x":57,"y":388},{"type":"mousemove","time":4647,"x":287,"y":385},{"type":"mousemove","time":4851,"x":287,"y":385},{"type":"mousedown","time":4934,"x":287,"y":385},{"type":"mouseup","time":5020,"x":287,"y":385},{"time":5021,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5063,"x":287,"y":384},{"type":"mousemove","time":5268,"x":311,"y":385},{"type":"mousemove","time":5468,"x":545,"y":375},{"type":"mousemove","time":5684,"x":558,"y":377},{"type":"mousedown","time":5768,"x":558,"y":377},{"type":"mouseup","time":5850,"x":558,"y":377},{"time":5851,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5899,"x":558,"y":377}],"scrollY":1020,"scrollX":0,"timestamp":1568035964232}] \ No newline at end of file diff --git a/test/runTest/actions/dataZoom-axes.json b/test/runTest/actions/dataZoom-axes.json new file mode 100644 index 0000000000..5313a80840 --- /dev/null +++ b/test/runTest/actions/dataZoom-axes.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":323,"x":778,"y":120},{"type":"mousemove","time":466,"x":778,"y":122},{"type":"mousemove","time":672,"x":775,"y":164},{"type":"mousemove","time":884,"x":777,"y":236},{"type":"mousemove","time":1102,"x":778,"y":294},{"type":"mousemove","time":1302,"x":773,"y":351},{"type":"mousemove","time":1505,"x":772,"y":357},{"type":"mousemove","time":1823,"x":772,"y":358},{"type":"mouseup","time":1857,"x":772,"y":358},{"time":1858,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":58,"timestamp":1568036086542},{"name":"Action 2","ops":[{"type":"mousedown","time":474,"x":779,"y":112},{"type":"mousemove","time":577,"x":779,"y":113},{"type":"mousemove","time":782,"x":774,"y":186},{"type":"mousemove","time":1001,"x":771,"y":223},{"type":"mousemove","time":1214,"x":773,"y":259},{"type":"mousemove","time":1418,"x":773,"y":261},{"type":"mouseup","time":1485,"x":773,"y":261},{"time":1486,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2144,"x":773,"y":260},{"type":"mousedown","time":2192,"x":773,"y":260},{"type":"mousemove","time":2344,"x":776,"y":292},{"type":"mousemove","time":2544,"x":776,"y":372},{"type":"mousemove","time":2752,"x":775,"y":383},{"type":"mousemove","time":3063,"x":775,"y":383},{"type":"mouseup","time":3101,"x":775,"y":383},{"time":3102,"delay":400,"type":"screenshot-auto"}],"scrollY":700,"scrollX":58,"timestamp":1568036122556},{"name":"Action 3","ops":[{"type":"mousemove","time":172,"x":771,"y":119},{"type":"mousemove","time":373,"x":770,"y":111},{"type":"mousedown","time":648,"x":770,"y":111},{"type":"mousemove","time":657,"x":770,"y":111},{"type":"mousemove","time":857,"x":775,"y":180},{"type":"mousemove","time":1067,"x":774,"y":292},{"type":"mousemove","time":1267,"x":773,"y":322},{"type":"mousemove","time":1476,"x":771,"y":343},{"type":"mousemove","time":1679,"x":772,"y":362},{"type":"mousemove","time":1879,"x":777,"y":392},{"type":"mousemove","time":2091,"x":780,"y":424},{"type":"mouseup","time":2305,"x":780,"y":424},{"time":2306,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2375,"x":780,"y":428},{"type":"mousemove","time":2575,"x":774,"y":483},{"type":"mousemove","time":2775,"x":772,"y":495},{"type":"mousedown","time":2865,"x":772,"y":495},{"type":"mousemove","time":2976,"x":772,"y":489},{"type":"mousemove","time":3176,"x":781,"y":453},{"type":"mousemove","time":3384,"x":781,"y":453},{"type":"mouseup","time":3867,"x":781,"y":453},{"time":3868,"delay":400,"type":"screenshot-auto"}],"scrollY":1378,"scrollX":58,"timestamp":1568036137271},{"name":"Action 4","ops":[{"type":"mousedown","time":216,"x":775,"y":152},{"type":"mousemove","time":294,"x":775,"y":154},{"type":"mousemove","time":496,"x":778,"y":196},{"type":"mousemove","time":696,"x":778,"y":242},{"type":"mousemove","time":902,"x":774,"y":300},{"type":"mousemove","time":1102,"x":773,"y":308},{"type":"mouseup","time":1652,"x":773,"y":308},{"time":1653,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1745,"x":773,"y":312},{"type":"mousemove","time":1946,"x":768,"y":427},{"type":"mousemove","time":2147,"x":760,"y":492},{"type":"mousemove","time":2347,"x":766,"y":522},{"type":"mousemove","time":2553,"x":771,"y":531},{"type":"mousedown","time":2709,"x":776,"y":533},{"type":"mousemove","time":2770,"x":776,"y":533},{"type":"mousemove","time":2814,"x":775,"y":530},{"type":"mousemove","time":3014,"x":774,"y":435},{"type":"mousemove","time":3216,"x":773,"y":375},{"type":"mousemove","time":3433,"x":775,"y":348},{"type":"mousemove","time":3637,"x":776,"y":337},{"type":"mousemove","time":3848,"x":776,"y":337},{"type":"mousemove","time":4056,"x":776,"y":337},{"type":"mouseup","time":4211,"x":776,"y":337},{"time":4212,"delay":400,"type":"screenshot-auto"}],"scrollY":2021,"scrollX":58,"timestamp":1568036159486}] \ No newline at end of file diff --git a/test/runTest/actions/dataZoom-axis-type.json b/test/runTest/actions/dataZoom-axis-type.json new file mode 100644 index 0000000000..4a4fc62432 --- /dev/null +++ b/test/runTest/actions/dataZoom-axis-type.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":318,"x":174,"y":276},{"type":"mousemove","time":452,"x":177,"y":276},{"type":"mousemove","time":652,"x":298,"y":283},{"type":"mousemove","time":854,"x":412,"y":291},{"type":"mousemove","time":1059,"x":415,"y":291},{"type":"mouseup","time":1293,"x":415,"y":291},{"time":1294,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1335,"x":415,"y":291},{"type":"mousemove","time":1536,"x":315,"y":282},{"type":"mousemove","time":1737,"x":299,"y":278},{"type":"mousedown","time":1795,"x":299,"y":278},{"type":"mousemove","time":1962,"x":429,"y":281},{"type":"mousemove","time":2163,"x":532,"y":282},{"type":"mousemove","time":2363,"x":543,"y":281},{"type":"mouseup","time":2560,"x":543,"y":281},{"time":2561,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2621,"x":541,"y":281},{"type":"mousemove","time":2827,"x":414,"y":282},{"type":"mousemove","time":3050,"x":400,"y":281},{"type":"mousemove","time":3251,"x":399,"y":281},{"type":"mousedown","time":3331,"x":399,"y":281},{"type":"mousemove","time":3488,"x":497,"y":283},{"type":"mousemove","time":3694,"x":557,"y":285},{"type":"mouseup","time":4000,"x":557,"y":285},{"time":4001,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568036243681},{"name":"Action 2","ops":[{"type":"mousedown","time":310,"x":177,"y":382},{"type":"mousemove","time":413,"x":184,"y":382},{"type":"mousemove","time":625,"x":396,"y":392},{"type":"mousemove","time":829,"x":461,"y":392},{"type":"mousemove","time":1036,"x":472,"y":392},{"type":"mousemove","time":1270,"x":476,"y":392},{"type":"mouseup","time":1287,"x":476,"y":392},{"time":1288,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1348,"x":470,"y":392},{"type":"mousemove","time":1554,"x":288,"y":391},{"type":"mousemove","time":1763,"x":203,"y":378},{"type":"mousemove","time":1970,"x":155,"y":375},{"type":"mousemove","time":2180,"x":147,"y":381},{"type":"mousedown","time":2337,"x":146,"y":382},{"type":"mousemove","time":2387,"x":146,"y":382},{"type":"mousemove","time":2431,"x":150,"y":382},{"type":"mousemove","time":2639,"x":331,"y":388},{"type":"mousemove","time":2839,"x":338,"y":387},{"type":"mouseup","time":2988,"x":338,"y":387},{"time":2989,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3015,"x":339,"y":387},{"type":"mousemove","time":3222,"x":410,"y":394},{"type":"mousemove","time":3432,"x":414,"y":394},{"type":"mousedown","time":3489,"x":436,"y":391},{"type":"mousemove","time":3636,"x":501,"y":391},{"type":"mousemove","time":3837,"x":536,"y":391},{"type":"mouseup","time":4072,"x":536,"y":391},{"time":4073,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4499,"x":533,"y":391}],"scrollY":332,"scrollX":0,"timestamp":1568036254422},{"name":"Action 3","ops":[{"type":"mousedown","time":397,"x":184,"y":440},{"type":"mousemove","time":491,"x":185,"y":440},{"type":"mousemove","time":691,"x":399,"y":438},{"type":"mousemove","time":891,"x":432,"y":438},{"type":"mouseup","time":1232,"x":432,"y":438},{"time":1233,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1325,"x":421,"y":439},{"type":"mousemove","time":1533,"x":301,"y":441},{"type":"mousedown","time":1734,"x":297,"y":441},{"type":"mousemove","time":1742,"x":297,"y":441},{"type":"mousemove","time":1955,"x":418,"y":441},{"type":"mousemove","time":2173,"x":472,"y":442},{"type":"mouseup","time":2357,"x":472,"y":442},{"time":2358,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2427,"x":470,"y":442},{"type":"mousemove","time":2627,"x":313,"y":448},{"type":"mousemove","time":2834,"x":308,"y":447},{"type":"mousemove","time":2894,"x":312,"y":447},{"type":"mousemove","time":3101,"x":319,"y":446},{"type":"mousedown","time":3168,"x":319,"y":446},{"type":"mousemove","time":3211,"x":321,"y":446},{"type":"mousemove","time":3424,"x":476,"y":447},{"type":"mousemove","time":3625,"x":490,"y":448},{"type":"mousemove","time":3834,"x":503,"y":447},{"type":"mousemove","time":4119,"x":506,"y":447},{"type":"mouseup","time":4202,"x":506,"y":447},{"time":4203,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4262,"x":505,"y":447},{"type":"mousemove","time":4462,"x":497,"y":447}],"scrollY":718,"scrollX":0,"timestamp":1568036266077}] \ No newline at end of file diff --git a/test/runTest/actions/dataZoom-clip.json b/test/runTest/actions/dataZoom-clip.json new file mode 100644 index 0000000000..b4cbfb26bc --- /dev/null +++ b/test/runTest/actions/dataZoom-clip.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":226,"x":308,"y":355},{"type":"mousemove","time":426,"x":333,"y":398},{"type":"mousemove","time":628,"x":308,"y":424},{"type":"mousemove","time":833,"x":305,"y":430},{"type":"mousedown","time":953,"x":305,"y":430},{"type":"mousemove","time":1045,"x":307,"y":430},{"type":"mousemove","time":1255,"x":396,"y":431},{"type":"mousemove","time":1462,"x":468,"y":435},{"type":"mousemove","time":1670,"x":476,"y":436},{"type":"mouseup","time":1753,"x":476,"y":436},{"time":1754,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1795,"x":477,"y":436},{"type":"mousemove","time":2000,"x":499,"y":435},{"type":"mousemove","time":2234,"x":505,"y":436},{"type":"mousedown","time":2386,"x":505,"y":436},{"type":"mousemove","time":2462,"x":505,"y":436},{"type":"mousemove","time":2662,"x":404,"y":441},{"type":"mousemove","time":2863,"x":387,"y":441},{"type":"mousemove","time":3070,"x":338,"y":453},{"type":"mouseup","time":3220,"x":338,"y":453},{"time":3221,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3263,"x":335,"y":451},{"type":"mousemove","time":3463,"x":307,"y":438},{"type":"mousedown","time":3621,"x":307,"y":438},{"type":"mousemove","time":3681,"x":311,"y":438},{"type":"mousemove","time":3881,"x":423,"y":430},{"type":"mousemove","time":4087,"x":539,"y":431},{"type":"mousemove","time":4306,"x":540,"y":431},{"type":"mousemove","time":4365,"x":541,"y":431},{"type":"mousemove","time":4571,"x":543,"y":431},{"type":"mouseup","time":4656,"x":543,"y":431},{"time":4657,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568036421119},{"name":"Action 2","ops":[{"type":"mousedown","time":587,"x":420,"y":159},{"type":"mouseup","time":661,"x":420,"y":159},{"time":662,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":1366,"x":420,"y":159},{"type":"mouseup","time":1457,"x":420,"y":159},{"time":1458,"delay":400,"type":"screenshot-auto"}],"scrollY":367,"scrollX":0,"timestamp":1568036433059},{"name":"Action 3","ops":[{"type":"mousemove","time":194,"x":40,"y":174},{"type":"mousemove","time":399,"x":37,"y":172},{"type":"mousemove","time":444,"x":38,"y":172},{"type":"mousemove","time":650,"x":41,"y":176},{"type":"mousemove","time":861,"x":429,"y":511},{"type":"mousemove","time":1066,"x":441,"y":526},{"type":"mousemove","time":1278,"x":462,"y":564},{"type":"mousemove","time":1478,"x":470,"y":574},{"type":"mousemove","time":1653,"x":465,"y":574},{"type":"mousemove","time":1860,"x":461,"y":575},{"type":"mousedown","time":2200,"x":461,"y":575},{"type":"mousemove","time":2387,"x":424,"y":576},{"type":"mousemove","time":2588,"x":319,"y":576},{"type":"mousemove","time":2794,"x":253,"y":580},{"type":"mousemove","time":3004,"x":246,"y":581},{"type":"mousemove","time":3211,"x":244,"y":581},{"type":"mousemove","time":3404,"x":244,"y":581},{"type":"mouseup","time":3528,"x":244,"y":581},{"time":3529,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":4128,"x":244,"y":581},{"type":"mousemove","time":4189,"x":245,"y":581},{"type":"mousemove","time":4389,"x":364,"y":572},{"type":"mousemove","time":4589,"x":480,"y":569},{"type":"mousemove","time":5023,"x":484,"y":569},{"type":"mousemove","time":5231,"x":517,"y":569},{"type":"mouseup","time":5321,"x":517,"y":569},{"time":5322,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5391,"x":517,"y":569},{"type":"mousemove","time":5591,"x":70,"y":188},{"type":"mousemove","time":5798,"x":39,"y":149},{"type":"mousemove","time":6009,"x":43,"y":174},{"type":"mousemove","time":6213,"x":45,"y":180},{"type":"mousedown","time":6319,"x":45,"y":180},{"type":"mouseup","time":6416,"x":45,"y":180},{"time":6417,"delay":400,"type":"screenshot-auto"}],"scrollY":848,"scrollX":0,"timestamp":1568036438877}] \ No newline at end of file diff --git a/test/runTest/actions/dataZoom-extreme.json b/test/runTest/actions/dataZoom-extreme.json new file mode 100644 index 0000000000..660ebc6802 --- /dev/null +++ b/test/runTest/actions/dataZoom-extreme.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":967,"x":544,"y":323},{"type":"mousemove","time":1167,"x":189,"y":212},{"type":"mousemove","time":1375,"x":151,"y":198},{"type":"mousedown","time":1492,"x":151,"y":198},{"type":"mousemove","time":1502,"x":151,"y":198},{"type":"mouseup","time":1559,"x":151,"y":198},{"time":1560,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1710,"x":151,"y":198},{"type":"mousemove","time":1920,"x":157,"y":199},{"type":"mousemove","time":2126,"x":590,"y":240},{"type":"mousemove","time":2336,"x":699,"y":246},{"type":"mousemove","time":2540,"x":746,"y":241},{"type":"mousemove","time":2753,"x":752,"y":238},{"type":"mousedown","time":2892,"x":755,"y":237},{"type":"mousemove","time":2959,"x":755,"y":237},{"type":"mouseup","time":3010,"x":755,"y":237},{"time":3011,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3188,"x":752,"y":237},{"type":"mousemove","time":3396,"x":329,"y":302},{"type":"mousemove","time":3610,"x":291,"y":306},{"type":"mousedown","time":3698,"x":291,"y":306},{"type":"mousemove","time":3821,"x":303,"y":322},{"type":"mousemove","time":4021,"x":490,"y":441},{"type":"mousemove","time":4229,"x":543,"y":463},{"type":"mouseup","time":4456,"x":543,"y":463},{"time":4457,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4647,"x":543,"y":463}],"scrollY":335,"scrollX":0,"timestamp":1568036687401}] \ No newline at end of file diff --git a/test/runTest/actions/dataZoom-rainfall-connect.json b/test/runTest/actions/dataZoom-rainfall-connect.json new file mode 100644 index 0000000000..00eb7b1e21 --- /dev/null +++ b/test/runTest/actions/dataZoom-rainfall-connect.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":468,"x":138,"y":131},{"type":"mousemove","time":593,"x":140,"y":131},{"type":"mousemove","time":794,"x":274,"y":131},{"type":"mousemove","time":1081,"x":428,"y":124},{"type":"mouseup","time":1255,"x":428,"y":124},{"time":1256,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":1288,"x":428,"y":124},{"type":"mousemove","time":1377,"x":426,"y":124},{"type":"mousemove","time":1577,"x":206,"y":119},{"type":"mousedown","time":1720,"x":184,"y":120},{"type":"mousemove","time":1786,"x":184,"y":120},{"type":"mousemove","time":1991,"x":407,"y":116},{"type":"mousemove","time":2191,"x":443,"y":115},{"type":"mouseup","time":2605,"x":443,"y":115},{"time":2606,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":2995,"x":442,"y":116},{"type":"mousemove","time":3195,"x":347,"y":274},{"type":"mousemove","time":3395,"x":301,"y":351},{"type":"mousemove","time":3595,"x":328,"y":359},{"type":"mousedown","time":3679,"x":328,"y":359},{"type":"mousemove","time":3821,"x":324,"y":360},{"type":"mousemove","time":4037,"x":136,"y":364},{"type":"mousemove","time":4251,"x":100,"y":363},{"type":"mouseup","time":4330,"x":100,"y":363},{"time":4331,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":4463,"x":188,"y":358},{"type":"mousemove","time":4663,"x":330,"y":355},{"type":"mousedown","time":4774,"x":329,"y":355},{"type":"mousemove","time":4870,"x":316,"y":359},{"type":"mousemove","time":5079,"x":132,"y":372},{"type":"mousemove","time":5301,"x":110,"y":374},{"type":"mouseup","time":5324,"x":110,"y":374},{"time":5325,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":5683,"x":114,"y":375},{"type":"mousemove","time":5884,"x":171,"y":489},{"type":"mousemove","time":6083,"x":173,"y":506},{"type":"mousemove","time":6292,"x":175,"y":511},{"type":"mousemove","time":6349,"x":175,"y":511},{"type":"mousemove","time":6557,"x":173,"y":514},{"type":"mousemove","time":6768,"x":170,"y":521},{"type":"mousedown","time":6943,"x":169,"y":522},{"type":"mousemove","time":6976,"x":169,"y":522},{"type":"mousemove","time":7199,"x":214,"y":528},{"type":"mousemove","time":7403,"x":298,"y":528},{"type":"mouseup","time":7780,"x":298,"y":528},{"time":7781,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":7951,"x":298,"y":527},{"type":"mousemove","time":8152,"x":177,"y":506},{"type":"mousemove","time":8361,"x":170,"y":500},{"type":"mousedown","time":8564,"x":170,"y":500},{"type":"mouseup","time":8646,"x":170,"y":500},{"time":8647,"delay":800,"type":"screenshot-auto"},{"type":"mousedown","time":9279,"x":170,"y":500},{"type":"mouseup","time":9389,"x":170,"y":500},{"time":9390,"delay":800,"type":"screenshot-auto"},{"type":"mousemove","time":9676,"x":171,"y":498},{"type":"mousemove","time":9877,"x":284,"y":120},{"type":"mousemove","time":10078,"x":299,"y":32},{"type":"mousemove","time":10289,"x":285,"y":1},{"type":"mousemove","time":10644,"x":285,"y":1},{"type":"mousemove","time":10854,"x":291,"y":6},{"type":"mousedown","time":11106,"x":291,"y":6},{"type":"mouseup","time":11189,"x":291,"y":6},{"time":11190,"delay":800,"type":"screenshot-auto"},{"type":"mousedown","time":11793,"x":291,"y":6},{"type":"mouseup","time":11890,"x":291,"y":6},{"time":11891,"delay":800,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568037648479}] \ No newline at end of file diff --git a/test/runTest/actions/dataZoom-rainfall-inside.json b/test/runTest/actions/dataZoom-rainfall-inside.json new file mode 100644 index 0000000000..82b4100901 --- /dev/null +++ b/test/runTest/actions/dataZoom-rainfall-inside.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":337,"x":291,"y":217},{"type":"mousemove","time":431,"x":293,"y":218},{"type":"mousemove","time":642,"x":411,"y":221},{"type":"mousemove","time":847,"x":577,"y":231},{"type":"mousemove","time":1057,"x":587,"y":231},{"type":"mouseup","time":1195,"x":587,"y":231},{"time":1196,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1249,"x":587,"y":231},{"type":"mousemove","time":1458,"x":658,"y":236},{"type":"mousedown","time":1644,"x":661,"y":236},{"type":"mousemove","time":1665,"x":661,"y":237},{"type":"mousemove","time":1867,"x":531,"y":245},{"type":"mousemove","time":2077,"x":312,"y":246},{"type":"mousemove","time":2282,"x":196,"y":251},{"type":"mousemove","time":2494,"x":190,"y":251},{"type":"mouseup","time":2644,"x":190,"y":251},{"time":2645,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568037702450}] \ No newline at end of file diff --git a/test/runTest/actions/dataZoom-rainfall.json b/test/runTest/actions/dataZoom-rainfall.json new file mode 100644 index 0000000000..55d5558dfd --- /dev/null +++ b/test/runTest/actions/dataZoom-rainfall.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":348,"x":682,"y":577},{"type":"mousemove","time":540,"x":678,"y":577},{"type":"mousemove","time":754,"x":522,"y":583},{"type":"mousemove","time":956,"x":396,"y":585},{"type":"mousemove","time":1157,"x":382,"y":585},{"type":"mouseup","time":1247,"x":382,"y":585},{"time":1248,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1806,"x":381,"y":585},{"type":"mousemove","time":2008,"x":251,"y":573},{"type":"mousemove","time":2214,"x":151,"y":575},{"type":"mousedown","time":2332,"x":151,"y":575},{"type":"mousemove","time":2431,"x":173,"y":577},{"type":"mousemove","time":2632,"x":285,"y":576},{"type":"mousemove","time":2855,"x":411,"y":573},{"type":"mouseup","time":3122,"x":411,"y":573},{"time":3123,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3699,"x":418,"y":568},{"type":"mousemove","time":3902,"x":679,"y":323},{"type":"mousemove","time":4106,"x":732,"y":124},{"type":"mousemove","time":4316,"x":768,"y":62},{"type":"mousemove","time":4521,"x":768,"y":60},{"type":"mousedown","time":4673,"x":768,"y":60},{"type":"mousemove","time":4768,"x":769,"y":62},{"type":"mousemove","time":4999,"x":783,"y":155},{"type":"mousemove","time":5211,"x":780,"y":205},{"type":"mousemove","time":5412,"x":780,"y":212},{"type":"mouseup","time":5489,"x":780,"y":212},{"time":5490,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5618,"x":779,"y":213},{"type":"mousemove","time":5819,"x":773,"y":286},{"type":"mousemove","time":6025,"x":775,"y":316},{"type":"mousedown","time":6076,"x":775,"y":316},{"type":"mousemove","time":6247,"x":775,"y":275},{"type":"mousemove","time":6463,"x":772,"y":140},{"type":"mousemove","time":6663,"x":777,"y":79},{"type":"mouseup","time":6963,"x":777,"y":79},{"time":6964,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7138,"x":767,"y":81},{"type":"mousemove","time":7345,"x":56,"y":90},{"type":"mousemove","time":7553,"x":19,"y":74},{"type":"mousemove","time":7754,"x":19,"y":69},{"type":"mousemove","time":7954,"x":21,"y":62},{"type":"mousedown","time":8090,"x":21,"y":62},{"type":"mousemove","time":8171,"x":22,"y":63},{"type":"mousemove","time":8379,"x":13,"y":168},{"type":"mousemove","time":8604,"x":9,"y":245},{"type":"mousemove","time":8811,"x":9,"y":247},{"type":"mouseup","time":8837,"x":9,"y":247},{"time":8838,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":8905,"x":9,"y":249},{"type":"mousemove","time":9106,"x":4,"y":310},{"type":"mousemove","time":9306,"x":10,"y":319},{"type":"mousedown","time":9428,"x":10,"y":319},{"type":"mousemove","time":9531,"x":15,"y":303},{"type":"mousemove","time":9759,"x":27,"y":191},{"type":"mousemove","time":9961,"x":33,"y":132},{"type":"mousemove","time":10173,"x":33,"y":125},{"type":"mousemove","time":10381,"x":33,"y":120},{"type":"mouseup","time":10465,"x":33,"y":120},{"time":10466,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568037713610}] \ No newline at end of file diff --git a/test/runTest/actions/dataZoom-scatter-category.json b/test/runTest/actions/dataZoom-scatter-category.json new file mode 100644 index 0000000000..995d9937c3 --- /dev/null +++ b/test/runTest/actions/dataZoom-scatter-category.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":350,"x":780,"y":507},{"type":"mousemove","time":496,"x":780,"y":507},{"type":"mousemove","time":703,"x":729,"y":430},{"type":"mousemove","time":911,"x":705,"y":331},{"type":"mousemove","time":1112,"x":703,"y":277},{"type":"mousemove","time":1320,"x":703,"y":276},{"type":"mouseup","time":1520,"x":703,"y":276},{"time":1521,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1962,"x":706,"y":273},{"type":"mousemove","time":2163,"x":739,"y":240},{"type":"mousemove","time":2363,"x":766,"y":211},{"type":"mousemove","time":2572,"x":767,"y":210},{"type":"mousedown","time":2705,"x":767,"y":210},{"type":"mousemove","time":2798,"x":767,"y":207},{"type":"mousemove","time":3005,"x":775,"y":144},{"type":"mousemove","time":3231,"x":773,"y":82},{"type":"mouseup","time":3573,"x":773,"y":82},{"time":3574,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3847,"x":773,"y":94},{"type":"mousemove","time":4048,"x":707,"y":579},{"type":"mousemove","time":4350,"x":735,"y":598},{"type":"mousemove","time":4555,"x":733,"y":582},{"type":"mousemove","time":4765,"x":721,"y":581},{"type":"mousemove","time":4966,"x":720,"y":581},{"type":"mousedown","time":5095,"x":720,"y":581},{"type":"mousemove","time":5134,"x":715,"y":581},{"type":"mousemove","time":5343,"x":564,"y":567},{"type":"mousemove","time":5549,"x":428,"y":563},{"type":"mousemove","time":5749,"x":352,"y":559},{"type":"mousemove","time":5966,"x":343,"y":559},{"type":"mouseup","time":6318,"x":343,"y":559},{"time":6319,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6425,"x":333,"y":559},{"type":"mousemove","time":6625,"x":237,"y":560},{"type":"mousemove","time":6831,"x":223,"y":562},{"type":"mousemove","time":7043,"x":216,"y":572},{"type":"mousedown","time":7183,"x":216,"y":572},{"type":"mousemove","time":7248,"x":217,"y":573},{"type":"mousemove","time":7461,"x":323,"y":573},{"type":"mousemove","time":7678,"x":421,"y":575},{"type":"mousemove","time":7885,"x":437,"y":576},{"type":"mouseup","time":8302,"x":437,"y":576},{"time":8303,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568037741270},{"name":"Action 2","ops":[{"type":"mousedown","time":490,"x":709,"y":14},{"type":"mouseup","time":586,"x":709,"y":14},{"time":587,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":714,"x":704,"y":17},{"type":"mousemove","time":915,"x":334,"y":219},{"type":"mousemove","time":1121,"x":282,"y":219},{"type":"mousedown","time":1211,"x":282,"y":219},{"type":"mousemove","time":1330,"x":334,"y":260},{"type":"mousemove","time":1531,"x":508,"y":381},{"type":"mousemove","time":1732,"x":594,"y":431},{"type":"mouseup","time":1863,"x":594,"y":431},{"time":1864,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1939,"x":591,"y":431},{"type":"mousemove","time":2158,"x":581,"y":433},{"type":"mousemove","time":2382,"x":582,"y":431},{"type":"mousemove","time":2582,"x":623,"y":359}],"scrollY":0,"scrollX":0,"timestamp":1568037752670}] \ No newline at end of file diff --git a/test/runTest/actions/dataZoom-scatter-hv-polar.json b/test/runTest/actions/dataZoom-scatter-hv-polar.json new file mode 100644 index 0000000000..615b4febdf --- /dev/null +++ b/test/runTest/actions/dataZoom-scatter-hv-polar.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":774,"x":777,"y":159},{"type":"mousemove","time":901,"x":777,"y":161},{"type":"mousemove","time":1107,"x":768,"y":209},{"type":"mousemove","time":1307,"x":765,"y":272},{"type":"mousemove","time":1513,"x":764,"y":343},{"type":"mousemove","time":1722,"x":763,"y":370},{"type":"mousemove","time":1928,"x":763,"y":370},{"type":"mouseup","time":1935,"x":763,"y":370},{"time":1936,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2128,"x":692,"y":445},{"type":"mousemove","time":2335,"x":652,"y":521},{"type":"mousemove","time":2539,"x":638,"y":584},{"type":"mousemove","time":2768,"x":638,"y":584},{"type":"mousemove","time":2969,"x":642,"y":580},{"type":"mousedown","time":3035,"x":642,"y":580},{"type":"mousemove","time":3172,"x":615,"y":580},{"type":"mousemove","time":3372,"x":526,"y":578},{"type":"mousemove","time":3573,"x":464,"y":582},{"type":"mousemove","time":3773,"x":412,"y":586},{"type":"mousemove","time":3975,"x":403,"y":587},{"type":"mouseup","time":4405,"x":403,"y":587},{"time":4406,"delay":400,"type":"screenshot-auto"}],"scrollY":9,"scrollX":0,"timestamp":1568037908913},{"name":"Action 2","ops":[{"type":"mousemove","time":406,"x":294,"y":15},{"type":"mousemove","time":606,"x":297,"y":13},{"type":"mousemove","time":819,"x":297,"y":13},{"type":"mousedown","time":918,"x":297,"y":13},{"type":"mouseup","time":1035,"x":297,"y":13},{"time":1036,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2108,"x":298,"y":13},{"type":"mousemove","time":2309,"x":755,"y":202},{"type":"mousemove","time":2574,"x":784,"y":380},{"type":"mousemove","time":2774,"x":781,"y":396},{"type":"mousemove","time":2922,"x":781,"y":396},{"type":"mousedown","time":2977,"x":781,"y":396},{"type":"mousemove","time":3124,"x":778,"y":382},{"type":"mousemove","time":3326,"x":773,"y":322},{"type":"mousemove","time":3526,"x":767,"y":269},{"type":"mousemove","time":3732,"x":766,"y":256},{"type":"mousemove","time":3941,"x":766,"y":249},{"type":"mouseup","time":4359,"x":766,"y":249},{"time":4360,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4463,"x":764,"y":253},{"type":"mousemove","time":4663,"x":523,"y":435},{"type":"mousemove","time":4865,"x":433,"y":504},{"type":"mousemove","time":5065,"x":454,"y":560},{"type":"mousemove","time":5265,"x":414,"y":568},{"type":"mousemove","time":5466,"x":381,"y":573},{"type":"mousedown","time":5656,"x":371,"y":572},{"type":"mousemove","time":5674,"x":371,"y":572},{"type":"mousemove","time":5749,"x":373,"y":572},{"type":"mousemove","time":5951,"x":469,"y":576},{"type":"mousemove","time":6152,"x":518,"y":575},{"type":"mousemove","time":6352,"x":541,"y":575},{"type":"mousemove","time":6552,"x":545,"y":575},{"type":"mouseup","time":6686,"x":545,"y":575},{"time":6687,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6837,"x":545,"y":575}],"scrollY":9,"scrollX":0,"timestamp":1568037922834},{"name":"Action 3","ops":[{"type":"mousedown","time":683,"x":9,"y":10},{"type":"mouseup","time":767,"x":9,"y":10},{"time":768,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1389,"x":10,"y":11},{"type":"mousemove","time":1593,"x":218,"y":278},{"type":"mousemove","time":1793,"x":301,"y":430},{"type":"mousemove","time":1994,"x":373,"y":517},{"type":"mousemove","time":2196,"x":384,"y":569},{"type":"mousemove","time":2396,"x":388,"y":574},{"type":"mousedown","time":2462,"x":388,"y":574},{"type":"mousemove","time":2469,"x":388,"y":574},{"type":"mousemove","time":2681,"x":296,"y":582},{"type":"mousemove","time":2881,"x":215,"y":580},{"type":"mousemove","time":3081,"x":209,"y":580},{"type":"mouseup","time":3297,"x":209,"y":580},{"time":3298,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3385,"x":211,"y":580},{"type":"mousemove","time":3586,"x":706,"y":377},{"type":"mousemove","time":3803,"x":765,"y":321},{"type":"mousemove","time":4010,"x":766,"y":311},{"type":"mousemove","time":4210,"x":773,"y":302},{"type":"mousedown","time":4218,"x":773,"y":302},{"type":"mousemove","time":4414,"x":772,"y":344},{"type":"mousemove","time":4615,"x":776,"y":365},{"type":"mousemove","time":4849,"x":781,"y":394},{"type":"mouseup","time":5020,"x":781,"y":394},{"time":5021,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5051,"x":781,"y":393},{"type":"mousemove","time":5251,"x":777,"y":340},{"type":"mousemove","time":5451,"x":774,"y":322},{"type":"mousemove","time":5651,"x":775,"y":314},{"type":"mousedown","time":5722,"x":775,"y":314},{"type":"mousemove","time":5851,"x":775,"y":313},{"type":"mousemove","time":6056,"x":772,"y":275},{"type":"mousemove","time":6271,"x":770,"y":236},{"type":"mousemove","time":6482,"x":770,"y":205},{"type":"mousemove","time":6690,"x":771,"y":177},{"type":"mousemove","time":6892,"x":772,"y":169},{"type":"mouseup","time":7068,"x":772,"y":169},{"time":7069,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7817,"x":772,"y":169},{"type":"mousemove","time":8017,"x":772,"y":170}],"scrollY":9,"scrollX":0,"timestamp":1568037935672}] \ No newline at end of file diff --git a/test/runTest/actions/dataZoom-scatter-hv.json b/test/runTest/actions/dataZoom-scatter-hv.json new file mode 100644 index 0000000000..33b37f7692 --- /dev/null +++ b/test/runTest/actions/dataZoom-scatter-hv.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":273,"x":774,"y":386},{"type":"mousemove","time":393,"x":774,"y":386},{"type":"mousemove","time":595,"x":775,"y":328},{"type":"mousemove","time":805,"x":776,"y":296},{"type":"mousemove","time":1005,"x":776,"y":287},{"type":"mouseup","time":1131,"x":776,"y":287},{"time":1132,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1168,"x":776,"y":287},{"type":"mousemove","time":1368,"x":781,"y":303},{"type":"mousedown","time":1637,"x":781,"y":303},{"type":"mousemove","time":1651,"x":781,"y":303},{"type":"mousemove","time":1895,"x":778,"y":359},{"type":"mousemove","time":2139,"x":782,"y":389},{"type":"mousemove","time":2340,"x":782,"y":391},{"type":"mouseup","time":2593,"x":782,"y":391},{"time":2594,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2702,"x":782,"y":391},{"type":"mousemove","time":2910,"x":504,"y":469},{"type":"mousemove","time":3110,"x":173,"y":584},{"type":"mousemove","time":3318,"x":108,"y":585},{"type":"mousemove","time":3534,"x":104,"y":582},{"type":"mousemove","time":3684,"x":104,"y":582},{"type":"mousedown","time":3769,"x":104,"y":582},{"type":"mousemove","time":3911,"x":133,"y":580},{"type":"mousemove","time":4182,"x":224,"y":579},{"type":"mousemove","time":4450,"x":229,"y":579},{"type":"mousemove","time":4685,"x":260,"y":577},{"type":"mouseup","time":5239,"x":260,"y":577},{"time":5240,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5470,"x":261,"y":577},{"type":"mousemove","time":5680,"x":272,"y":573},{"type":"mousedown","time":5913,"x":272,"y":573},{"type":"mousemove","time":5980,"x":270,"y":573},{"type":"mousemove","time":6187,"x":253,"y":576},{"type":"mouseup","time":6813,"x":253,"y":576},{"time":6814,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7665,"x":253,"y":576}],"scrollY":0,"scrollX":0,"timestamp":1568038035708}] \ No newline at end of file diff --git a/test/runTest/actions/dataZoom-scroll.json b/test/runTest/actions/dataZoom-scroll.json new file mode 100644 index 0000000000..3bf75fc972 --- /dev/null +++ b/test/runTest/actions/dataZoom-scroll.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousewheel","time":1420,"x":330,"y":281,"deltaY":4.000244140625},{"type":"mousewheel","time":1445,"x":330,"y":281,"deltaY":37.391357421875},{"type":"mousewheel","time":1460,"x":330,"y":281,"deltaY":154.0765380859375},{"type":"mousewheel","time":1489,"x":330,"y":281,"deltaY":215.107421875},{"type":"mousewheel","time":1522,"x":330,"y":281,"deltaY":242.252197265625},{"type":"mousedown","time":2125,"x":330,"y":281},{"type":"mouseup","time":2215,"x":330,"y":281},{"time":2216,"delay":400,"type":"screenshot-auto"},{"type":"mousewheel","time":2754,"x":330,"y":281,"deltaY":4.000244140625},{"type":"mousewheel","time":2792,"x":330,"y":281,"deltaY":31.5618896484375},{"type":"mousewheel","time":2844,"x":330,"y":281,"deltaY":102.8411865234375},{"type":"mousewheel","time":2883,"x":330,"y":281,"deltaY":161.5606689453125},{"type":"mousedown","time":3648,"x":330,"y":281},{"type":"mouseup","time":3757,"x":330,"y":281},{"time":3758,"delay":400,"type":"screenshot-auto"},{"type":"mousewheel","time":4330,"x":330,"y":281,"deltaY":4.000244140625},{"type":"mousewheel","time":4352,"x":330,"y":281,"deltaY":37.449951171875},{"type":"mousewheel","time":4376,"x":330,"y":281,"deltaY":146.2939453125},{"type":"mousewheel","time":4408,"x":330,"y":281,"deltaY":208.2574462890625},{"type":"mousewheel","time":4449,"x":330,"y":281,"deltaY":232.7606201171875},{"type":"mousewheel","time":4600,"x":330,"y":281,"deltaY":4.000244140625},{"type":"mousewheel","time":4631,"x":330,"y":281,"deltaY":34.4818115234375},{"type":"mousedown","time":5314,"x":330,"y":281},{"type":"mouseup","time":5467,"x":330,"y":281},{"time":5468,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568969529804},{"name":"Action 2","ops":[{"type":"mousewheel","time":258,"x":399,"y":307,"deltaY":-4.000244140625},{"type":"mousewheel","time":284,"x":399,"y":307,"deltaY":-40.4461669921875},{"type":"mousewheel","time":300,"x":399,"y":307,"deltaY":-154.19189453125},{"type":"mousewheel","time":318,"x":399,"y":307,"deltaY":-219.8541259765625},{"type":"mousewheel","time":384,"x":399,"y":307,"deltaY":-232.7490234375},{"type":"mousedown","time":1698,"x":399,"y":307},{"type":"mouseup","time":1817,"x":399,"y":307},{"time":1818,"delay":400,"type":"screenshot-auto"},{"type":"mousewheel","time":2192,"x":399,"y":307,"deltaY":4.000244140625},{"type":"mousewheel","time":2218,"x":399,"y":307,"deltaY":40.4315185546875},{"type":"mousewheel","time":2237,"x":399,"y":307,"deltaY":146.5045166015625},{"type":"mousedown","time":3273,"x":399,"y":307},{"type":"mouseup","time":3384,"x":399,"y":307},{"time":3385,"delay":400,"type":"screenshot-auto"},{"type":"mousewheel","time":3820,"x":399,"y":307,"deltaY":4.000244140625},{"type":"mousewheel","time":3843,"x":399,"y":307,"deltaY":37.4493408203125},{"type":"mousewheel","time":3852,"x":399,"y":307,"deltaY":161.96533203125},{"type":"mousewheel","time":3870,"x":399,"y":307,"deltaY":227.003173828125},{"type":"mousewheel","time":3877,"x":399,"y":307,"deltaY":262.0709228515625},{"type":"mousewheel","time":3891,"x":399,"y":307,"deltaY":292.82958984375},{"type":"mousewheel","time":3910,"x":399,"y":307,"deltaY":317.4334716796875},{"type":"mousewheel","time":3917,"x":399,"y":307,"deltaY":341.3763427734375},{"type":"mousedown","time":4806,"x":399,"y":307},{"type":"mouseup","time":4894,"x":399,"y":307},{"time":4895,"delay":400,"type":"screenshot-auto"}],"scrollY":427,"scrollX":0,"timestamp":1568969540319},{"name":"Action 3","ops":[{"type":"mousewheel","time":463,"x":425,"y":405,"deltaY":4.000244140625},{"type":"mousewheel","time":497,"x":425,"y":405,"deltaY":37.413330078125},{"type":"mousewheel","time":517,"x":425,"y":405,"deltaY":146.4801025390625},{"type":"mousewheel","time":525,"x":425,"y":405,"deltaY":219.815673828125},{"type":"mousewheel","time":567,"x":425,"y":405,"deltaY":242.2210693359375},{"type":"mousewheel","time":633,"x":425,"y":405,"deltaY":247.53662109375},{"type":"mousewheel","time":681,"x":425,"y":405,"deltaY":263.7841796875},{"type":"mousedown","time":1368,"x":425,"y":405},{"type":"mouseup","time":1473,"x":425,"y":405},{"time":1474,"delay":400,"type":"screenshot-auto"},{"type":"mousewheel","time":1967,"x":425,"y":405,"deltaY":4.000244140625},{"type":"mousewheel","time":1995,"x":425,"y":405,"deltaY":37.46337890625},{"type":"mousewheel","time":2019,"x":425,"y":405,"deltaY":146.597900390625},{"type":"mousewheel","time":2039,"x":425,"y":405,"deltaY":215.25390625},{"type":"mousewheel","time":2067,"x":425,"y":405,"deltaY":242.3187255859375},{"type":"mousewheel","time":2140,"x":425,"y":405,"deltaY":247.59033203125},{"type":"mousemove","time":2591,"x":425,"y":405},{"type":"mousedown","time":2750,"x":428,"y":405},{"type":"mousemove","time":2791,"x":428,"y":405},{"type":"mouseup","time":2852,"x":428,"y":405},{"time":2853,"delay":400,"type":"screenshot-auto"}],"scrollY":810,"scrollX":0,"timestamp":1568969559219}] \ No newline at end of file diff --git a/test/runTest/actions/dataZoom-sync.json b/test/runTest/actions/dataZoom-sync.json new file mode 100644 index 0000000000..65c35d6981 --- /dev/null +++ b/test/runTest/actions/dataZoom-sync.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":203,"x":721,"y":405},{"type":"mousemove","time":355,"x":718,"y":405},{"type":"mousemove","time":557,"x":557,"y":412},{"type":"mousemove","time":758,"x":452,"y":415},{"type":"mouseup","time":972,"x":452,"y":415},{"time":973,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":1540,"x":452,"y":415},{"type":"mousemove","time":1605,"x":450,"y":415},{"type":"mousemove","time":1808,"x":340,"y":417},{"type":"mousemove","time":2009,"x":194,"y":418},{"type":"mousemove","time":2225,"x":184,"y":418},{"type":"mouseup","time":2845,"x":184,"y":418},{"time":2846,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3037,"x":184,"y":417},{"type":"mousemove","time":3238,"x":184,"y":415},{"type":"mousedown","time":3424,"x":184,"y":414},{"type":"mousemove","time":3460,"x":182,"y":414},{"type":"mousemove","time":3660,"x":144,"y":410},{"type":"mousemove","time":3874,"x":130,"y":412},{"type":"mousemove","time":4217,"x":129,"y":412},{"type":"mousemove","time":4424,"x":122,"y":413},{"type":"mouseup","time":5052,"x":122,"y":413},{"time":5053,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5293,"x":122,"y":412},{"type":"mousemove","time":5494,"x":120,"y":412},{"type":"mousemove","time":5786,"x":120,"y":411},{"type":"mousemove","time":5990,"x":121,"y":409},{"type":"mousedown","time":6119,"x":121,"y":409},{"type":"mousemove","time":6178,"x":121,"y":409},{"type":"mousemove","time":6378,"x":176,"y":407},{"type":"mousemove","time":6581,"x":215,"y":408},{"type":"mousemove","time":6782,"x":333,"y":407},{"type":"mousemove","time":6982,"x":452,"y":403},{"type":"mousemove","time":7183,"x":561,"y":408},{"type":"mousemove","time":7384,"x":584,"y":408},{"type":"mouseup","time":7499,"x":584,"y":408},{"time":7500,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7581,"x":583,"y":408},{"type":"mousemove","time":7781,"x":456,"y":408},{"type":"mousemove","time":7998,"x":443,"y":407},{"type":"mousedown","time":8171,"x":443,"y":407},{"type":"mousemove","time":8238,"x":445,"y":407},{"type":"mousemove","time":8451,"x":617,"y":409},{"type":"mousemove","time":8651,"x":659,"y":410},{"type":"mouseup","time":8809,"x":659,"y":410},{"time":8810,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568038086588}] \ No newline at end of file diff --git a/test/runTest/actions/dataZoom-toolbox.json b/test/runTest/actions/dataZoom-toolbox.json new file mode 100644 index 0000000000..ae79937286 --- /dev/null +++ b/test/runTest/actions/dataZoom-toolbox.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":409,"x":770,"y":435},{"type":"mousemove","time":509,"x":770,"y":434},{"type":"mousemove","time":712,"x":770,"y":252},{"type":"mousemove","time":913,"x":768,"y":150},{"type":"mousemove","time":1115,"x":767,"y":139},{"type":"mouseup","time":1480,"x":767,"y":139},{"time":1481,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":2065,"x":766,"y":139},{"type":"mousemove","time":2265,"x":727,"y":130},{"type":"mousemove","time":2478,"x":710,"y":75},{"type":"mousemove","time":2776,"x":709,"y":78},{"type":"mousedown","time":2859,"x":709,"y":78},{"type":"mouseup","time":2935,"x":709,"y":78},{"time":2936,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":2992,"x":709,"y":78},{"type":"mousemove","time":3017,"x":708,"y":79},{"type":"mousemove","time":3222,"x":442,"y":238},{"type":"mousemove","time":3423,"x":325,"y":220},{"type":"mousemove","time":3624,"x":326,"y":224},{"type":"mousemove","time":3857,"x":320,"y":215},{"type":"mousedown","time":3874,"x":320,"y":215},{"type":"mousemove","time":4057,"x":442,"y":311},{"type":"mousemove","time":4257,"x":545,"y":382},{"type":"mousemove","time":4457,"x":554,"y":393},{"type":"mousemove","time":4725,"x":557,"y":396},{"type":"mouseup","time":4732,"x":557,"y":396},{"time":4733,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":4948,"x":557,"y":396},{"type":"mousemove","time":4996,"x":557,"y":396},{"type":"mousemove","time":6022,"x":553,"y":392},{"type":"mousemove","time":6222,"x":406,"y":237},{"type":"mousemove","time":6427,"x":383,"y":198},{"type":"mousemove","time":6627,"x":387,"y":182},{"type":"mousedown","time":6659,"x":404,"y":186},{"type":"mousemove","time":6837,"x":673,"y":299},{"type":"mousemove","time":7038,"x":706,"y":335},{"type":"mouseup","time":7227,"x":706,"y":336},{"time":7228,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":7260,"x":706,"y":336},{"type":"mousemove","time":8179,"x":706,"y":336},{"type":"mousemove","time":8379,"x":690,"y":332},{"type":"mousemove","time":8579,"x":498,"y":284},{"type":"mousemove","time":8783,"x":476,"y":264},{"type":"mousemove","time":8983,"x":474,"y":248},{"type":"mousedown","time":9052,"x":474,"y":248},{"type":"mousemove","time":9196,"x":533,"y":306},{"type":"mousemove","time":9397,"x":553,"y":325},{"type":"mouseup","time":9468,"x":553,"y":325},{"time":9469,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":10044,"x":553,"y":324},{"type":"mousemove","time":10261,"x":553,"y":324},{"type":"mousemove","time":10461,"x":553,"y":324},{"type":"mousemove","time":10661,"x":422,"y":263},{"type":"mousemove","time":10866,"x":413,"y":246},{"type":"mousedown","time":10966,"x":413,"y":246},{"type":"mousemove","time":11066,"x":465,"y":303},{"type":"mousemove","time":11267,"x":518,"y":357},{"type":"mouseup","time":11320,"x":518,"y":357},{"time":11321,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":11508,"x":518,"y":357},{"type":"mousemove","time":11709,"x":518,"y":353},{"type":"mousemove","time":12955,"x":524,"y":345},{"type":"mousemove","time":13156,"x":678,"y":142},{"type":"mousemove","time":13361,"x":716,"y":110},{"type":"mousemove","time":13563,"x":726,"y":87},{"type":"mousedown","time":13735,"x":726,"y":86},{"type":"mousemove","time":13772,"x":726,"y":86},{"type":"mouseup","time":13857,"x":726,"y":86},{"time":13858,"delay":1000,"type":"screenshot-auto"},{"type":"mousedown","time":14608,"x":726,"y":86},{"type":"mouseup","time":14708,"x":726,"y":86},{"time":14709,"delay":1000,"type":"screenshot-auto"},{"type":"mousedown","time":15726,"x":726,"y":86},{"type":"mouseup","time":15812,"x":726,"y":86},{"time":15813,"delay":1000,"type":"screenshot-auto"},{"type":"mousedown","time":17005,"x":726,"y":86},{"type":"mouseup","time":17122,"x":726,"y":86},{"time":17123,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":19668,"x":724,"y":86},{"type":"mousemove","time":19869,"x":662,"y":86}],"scrollY":0,"scrollX":0,"timestamp":1568038153909},{"name":"Action 2","ops":[{"type":"mousedown","time":455,"x":728,"y":71},{"type":"mouseup","time":536,"x":728,"y":71},{"time":537,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":1128,"x":727,"y":72},{"type":"mousemove","time":1328,"x":488,"y":158},{"type":"mousemove","time":1532,"x":166,"y":204},{"type":"mousemove","time":1732,"x":149,"y":208},{"type":"mousedown","time":1780,"x":149,"y":208},{"type":"mousemove","time":1942,"x":204,"y":280},{"type":"mousemove","time":2142,"x":287,"y":360},{"type":"mousemove","time":2343,"x":294,"y":367},{"type":"mousemove","time":2549,"x":304,"y":378},{"type":"mousemove","time":2749,"x":305,"y":380},{"type":"mouseup","time":2852,"x":305,"y":380},{"time":2853,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":5602,"x":307,"y":379},{"type":"mousemove","time":5802,"x":727,"y":100},{"type":"mousemove","time":6020,"x":769,"y":75},{"type":"mousemove","time":6221,"x":737,"y":71},{"type":"mousemove","time":6421,"x":736,"y":71},{"type":"mousedown","time":6546,"x":736,"y":71},{"type":"mouseup","time":6619,"x":736,"y":71},{"time":6620,"delay":1000,"type":"screenshot-auto"}],"scrollY":576,"scrollX":0,"timestamp":1568038203184},{"name":"Action 3","ops":[{"type":"mousedown","time":440,"x":733,"y":88},{"type":"mouseup","time":528,"x":733,"y":88},{"time":529,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":746,"x":732,"y":88},{"type":"mousemove","time":946,"x":270,"y":226},{"type":"mousemove","time":1157,"x":187,"y":231},{"type":"mousemove","time":1357,"x":159,"y":243},{"type":"mousedown","time":1408,"x":159,"y":243},{"type":"mousemove","time":1560,"x":181,"y":287},{"type":"mousemove","time":1761,"x":278,"y":424},{"type":"mousemove","time":1962,"x":320,"y":460},{"type":"mousemove","time":2200,"x":320,"y":460},{"type":"mouseup","time":2275,"x":320,"y":460},{"time":2276,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":3032,"x":320,"y":460},{"type":"mousemove","time":3233,"x":527,"y":325},{"type":"mousemove","time":3443,"x":584,"y":266},{"type":"mousemove","time":3643,"x":595,"y":258},{"type":"mousedown","time":3730,"x":595,"y":258},{"type":"mousemove","time":3845,"x":612,"y":284},{"type":"mousemove","time":4047,"x":711,"y":381},{"type":"mousemove","time":4250,"x":733,"y":391},{"type":"mouseup","time":4368,"x":739,"y":394},{"time":4369,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":4486,"x":739,"y":394},{"type":"mousemove","time":5816,"x":738,"y":393},{"type":"mousemove","time":6023,"x":738,"y":202},{"type":"mousemove","time":6225,"x":753,"y":112},{"type":"mousemove","time":6430,"x":755,"y":96},{"type":"mousedown","time":6587,"x":756,"y":95},{"type":"mousemove","time":6631,"x":756,"y":95},{"type":"mouseup","time":6672,"x":756,"y":95},{"time":6673,"delay":1000,"type":"screenshot-auto"},{"type":"mousedown","time":7406,"x":756,"y":95},{"type":"mouseup","time":7508,"x":756,"y":95},{"time":7509,"delay":1000,"type":"screenshot-auto"}],"scrollY":1123,"scrollX":0,"timestamp":1568038221499},{"name":"Action 4","ops":[{"type":"mousedown","time":932,"x":727,"y":73},{"type":"mouseup","time":1028,"x":727,"y":73},{"time":1029,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":1377,"x":726,"y":73},{"type":"mousemove","time":1578,"x":218,"y":194},{"type":"mousemove","time":1778,"x":198,"y":196},{"type":"mousedown","time":1864,"x":198,"y":196},{"type":"mousemove","time":1980,"x":198,"y":211},{"type":"mousemove","time":2181,"x":202,"y":293},{"type":"mousemove","time":2382,"x":202,"y":378},{"type":"mousemove","time":2582,"x":201,"y":403},{"type":"mouseup","time":2904,"x":201,"y":403},{"time":2905,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":3399,"x":201,"y":403},{"type":"mousemove","time":3599,"x":212,"y":392},{"type":"mousemove","time":3805,"x":218,"y":303},{"type":"mousemove","time":4005,"x":213,"y":276},{"type":"mousedown","time":4037,"x":213,"y":276},{"type":"mousemove","time":4216,"x":217,"y":331},{"type":"mousemove","time":4416,"x":218,"y":356},{"type":"mousemove","time":4617,"x":219,"y":363},{"type":"mouseup","time":4647,"x":219,"y":363},{"time":4648,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":4967,"x":220,"y":363},{"type":"mousemove","time":5168,"x":353,"y":345},{"type":"mousemove","time":5367,"x":581,"y":284},{"type":"mousemove","time":5567,"x":627,"y":231},{"type":"mousedown","time":5657,"x":627,"y":230},{"type":"mousemove","time":5770,"x":629,"y":264},{"type":"mousemove","time":5983,"x":633,"y":328},{"type":"mousemove","time":6183,"x":640,"y":376},{"type":"mouseup","time":6585,"x":640,"y":376},{"time":6586,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":6970,"x":640,"y":375},{"type":"mousemove","time":7179,"x":640,"y":286},{"type":"mousemove","time":7384,"x":642,"y":264},{"type":"mousedown","time":7503,"x":642,"y":263},{"type":"mousemove","time":7588,"x":643,"y":281},{"type":"mousemove","time":7802,"x":647,"y":328},{"type":"mouseup","time":7953,"x":648,"y":331},{"time":7954,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":8023,"x":648,"y":331},{"type":"mousemove","time":8196,"x":648,"y":330},{"type":"mousemove","time":8405,"x":678,"y":197},{"type":"mousemove","time":8614,"x":723,"y":94},{"type":"mousemove","time":8823,"x":753,"y":75},{"type":"mousemove","time":9031,"x":754,"y":73},{"type":"mousedown","time":9049,"x":754,"y":73},{"type":"mouseup","time":9123,"x":754,"y":73},{"time":9124,"delay":1000,"type":"screenshot-auto"},{"type":"mousedown","time":9647,"x":754,"y":73},{"type":"mouseup","time":9725,"x":754,"y":73},{"time":9726,"delay":1000,"type":"screenshot-auto"},{"type":"mousedown","time":10291,"x":754,"y":73},{"type":"mouseup","time":10392,"x":754,"y":73},{"time":10393,"delay":1000,"type":"screenshot-auto"},{"type":"mousedown","time":10866,"x":754,"y":73},{"type":"mouseup","time":10956,"x":754,"y":73},{"time":10957,"delay":1000,"type":"screenshot-auto"}],"scrollY":1708,"scrollX":0,"timestamp":1568038236275},{"name":"Action 5","ops":[{"type":"mousedown","time":607,"x":735,"y":117},{"type":"mouseup","time":706,"x":735,"y":117},{"time":707,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":895,"x":734,"y":117},{"type":"mousemove","time":1095,"x":316,"y":269},{"type":"mousemove","time":1307,"x":171,"y":289},{"type":"mousedown","time":1510,"x":171,"y":289},{"type":"mousemove","time":1540,"x":171,"y":290},{"type":"mousemove","time":1744,"x":175,"y":367},{"type":"mousemove","time":1944,"x":178,"y":409},{"type":"mousemove","time":2147,"x":212,"y":415},{"type":"mousemove","time":2348,"x":253,"y":419},{"type":"mousemove","time":2580,"x":254,"y":419},{"type":"mousemove","time":2798,"x":260,"y":420},{"type":"mouseup","time":3191,"x":260,"y":420},{"time":3192,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":3611,"x":257,"y":417},{"type":"mousemove","time":3812,"x":247,"y":406},{"type":"mousemove","time":4026,"x":178,"y":395},{"type":"mousedown","time":4159,"x":178,"y":395},{"type":"mousemove","time":4233,"x":183,"y":395},{"type":"mousemove","time":4436,"x":256,"y":394},{"type":"mousemove","time":4637,"x":266,"y":394},{"type":"mouseup","time":4684,"x":266,"y":394},{"time":4685,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":4855,"x":265,"y":394},{"type":"mousemove","time":5073,"x":269,"y":393},{"type":"mousemove","time":5273,"x":518,"y":385},{"type":"mousemove","time":5473,"x":566,"y":386},{"type":"mousemove","time":5678,"x":592,"y":390},{"type":"mousedown","time":5826,"x":592,"y":390},{"type":"mousemove","time":5906,"x":594,"y":390},{"type":"mousemove","time":6111,"x":676,"y":392},{"type":"mousemove","time":6313,"x":708,"y":395},{"type":"mousemove","time":6642,"x":708,"y":395},{"type":"mouseup","time":6739,"x":708,"y":395},{"time":6740,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":6860,"x":704,"y":395},{"type":"mousemove","time":7060,"x":672,"y":385},{"type":"mousemove","time":7260,"x":656,"y":381},{"type":"mousedown","time":7406,"x":655,"y":381},{"type":"mousemove","time":7476,"x":665,"y":384},{"type":"mousemove","time":7677,"x":692,"y":385},{"type":"mouseup","time":7893,"x":694,"y":385},{"time":7894,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":7944,"x":694,"y":385},{"type":"mousemove","time":8049,"x":694,"y":384},{"type":"mousemove","time":8258,"x":740,"y":160},{"type":"mousemove","time":8464,"x":771,"y":109},{"type":"mousemove","time":8675,"x":746,"y":115},{"type":"mousemove","time":8974,"x":747,"y":115},{"type":"mousemove","time":9184,"x":754,"y":115},{"type":"mousedown","time":9480,"x":754,"y":115},{"type":"mouseup","time":9551,"x":754,"y":115},{"time":9552,"delay":1000,"type":"screenshot-auto"},{"type":"mousedown","time":10069,"x":754,"y":115},{"type":"mouseup","time":10148,"x":754,"y":115},{"time":10149,"delay":1000,"type":"screenshot-auto"},{"type":"mousedown","time":10636,"x":754,"y":115},{"type":"mouseup","time":10706,"x":754,"y":115},{"time":10707,"delay":1000,"type":"screenshot-auto"},{"type":"mousedown","time":11182,"x":754,"y":115},{"type":"mouseup","time":11268,"x":754,"y":115},{"time":11269,"delay":1000,"type":"screenshot-auto"}],"scrollY":2233,"scrollX":0,"timestamp":1568038252219},{"name":"Action 6","ops":[{"type":"mousemove","time":358,"x":292,"y":305},{"type":"mousemove","time":569,"x":202,"y":296},{"type":"mousemove","time":783,"x":146,"y":303},{"type":"mousemove","time":983,"x":228,"y":303},{"type":"mousemove","time":1192,"x":222,"y":322},{"type":"mousemove","time":1411,"x":266,"y":246},{"type":"mousemove","time":1619,"x":405,"y":247},{"type":"mousemove","time":1833,"x":400,"y":238},{"type":"mousemove","time":2036,"x":396,"y":236},{"type":"mousemove","time":2257,"x":424,"y":234},{"type":"mousemove","time":2457,"x":649,"y":262},{"type":"mousemove","time":2682,"x":770,"y":217},{"type":"mousemove","time":2895,"x":768,"y":212},{"type":"mousemove","time":3124,"x":762,"y":215},{"type":"mousedown","time":3200,"x":762,"y":215},{"type":"mouseup","time":3217,"x":762,"y":215},{"time":3218,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3396,"x":761,"y":215},{"type":"mousemove","time":3602,"x":478,"y":315},{"type":"mousemove","time":3813,"x":393,"y":286},{"type":"mousemove","time":4019,"x":380,"y":274},{"type":"mousemove","time":4235,"x":378,"y":274},{"type":"mousedown","time":4401,"x":378,"y":274},{"type":"mousemove","time":4417,"x":379,"y":291},{"type":"mousemove","time":4639,"x":401,"y":458},{"type":"mousemove","time":4841,"x":410,"y":525},{"type":"mousemove","time":5067,"x":410,"y":527},{"type":"mouseup","time":5377,"x":410,"y":527},{"time":5378,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5421,"x":448,"y":465},{"type":"mousemove","time":5647,"x":507,"y":396},{"type":"mousemove","time":5920,"x":507,"y":396},{"type":"mousemove","time":6680,"x":502,"y":384},{"type":"mousemove","time":6886,"x":398,"y":276},{"type":"mousemove","time":7087,"x":378,"y":231},{"type":"mousemove","time":7336,"x":370,"y":214},{"type":"mousedown","time":7624,"x":370,"y":214},{"type":"mouseup","time":7640,"x":370,"y":214},{"time":7641,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":8944,"x":370,"y":214},{"type":"mouseup","time":8964,"x":370,"y":214},{"time":8965,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":10163,"x":370,"y":214},{"type":"mouseup","time":10175,"x":370,"y":214},{"time":10176,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":11716,"x":370,"y":214},{"type":"mouseup","time":11738,"x":370,"y":214},{"time":11739,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":12316,"x":371,"y":214},{"type":"mousemove","time":12563,"x":372,"y":214},{"type":"mousemove","time":12761,"x":372,"y":214},{"type":"mousemove","time":12993,"x":747,"y":257},{"type":"mousemove","time":13359,"x":799,"y":229},{"type":"mousemove","time":13571,"x":789,"y":217},{"type":"mousemove","time":13803,"x":786,"y":217},{"type":"mousedown","time":13900,"x":786,"y":217},{"type":"mouseup","time":13912,"x":786,"y":217},{"time":13913,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":15464,"x":786,"y":217},{"type":"mousemove","time":15679,"x":758,"y":233},{"type":"mousemove","time":15882,"x":623,"y":240},{"type":"mousemove","time":16097,"x":548,"y":237},{"type":"mousemove","time":16318,"x":681,"y":235},{"type":"mousemove","time":16520,"x":760,"y":220},{"type":"mousemove","time":16730,"x":778,"y":215},{"type":"mousemove","time":16959,"x":763,"y":224},{"type":"mousemove","time":17229,"x":766,"y":218},{"type":"mousemove","time":17479,"x":766,"y":218},{"type":"mousedown","time":19210,"x":766,"y":218},{"type":"mouseup","time":19227,"x":766,"y":218},{"time":19228,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":19357,"x":762,"y":218},{"type":"mousemove","time":19562,"x":414,"y":280},{"type":"mousemove","time":19763,"x":387,"y":281},{"type":"mousemove","time":19973,"x":491,"y":259},{"type":"mousemove","time":20181,"x":727,"y":212},{"type":"mousemove","time":20398,"x":764,"y":225},{"type":"mousemove","time":20602,"x":766,"y":217},{"type":"mousedown","time":20730,"x":766,"y":217},{"type":"mouseup","time":20752,"x":766,"y":217},{"time":20753,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":20902,"x":763,"y":217},{"type":"mousemove","time":21113,"x":429,"y":276},{"type":"mousemove","time":21326,"x":391,"y":282},{"type":"mousemove","time":21549,"x":387,"y":272},{"type":"mousedown","time":21788,"x":387,"y":271},{"type":"mousemove","time":21810,"x":387,"y":271},{"type":"mousemove","time":21824,"x":389,"y":298},{"type":"mousemove","time":22035,"x":401,"y":473},{"type":"mousemove","time":22242,"x":405,"y":503},{"type":"mousemove","time":22477,"x":406,"y":505},{"type":"mouseup","time":22566,"x":406,"y":505},{"time":22567,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":22602,"x":423,"y":460},{"type":"mousemove","time":22810,"x":448,"y":319},{"type":"mousemove","time":23018,"x":441,"y":291},{"type":"mousemove","time":23245,"x":406,"y":240},{"type":"mousemove","time":23455,"x":372,"y":213},{"type":"mousemove","time":23681,"x":366,"y":210},{"type":"mousedown","time":23745,"x":366,"y":210},{"type":"mouseup","time":23761,"x":366,"y":210},{"time":23762,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":24113,"x":370,"y":210},{"type":"mousemove","time":24334,"x":696,"y":217},{"type":"mousemove","time":24536,"x":738,"y":208},{"type":"mousemove","time":24758,"x":779,"y":209},{"type":"mousemove","time":25013,"x":785,"y":213},{"type":"mousedown","time":25433,"x":785,"y":213},{"type":"mouseup","time":25446,"x":785,"y":213},{"time":25447,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":26004,"x":781,"y":216},{"type":"mousemove","time":26204,"x":684,"y":263},{"type":"mousemove","time":26415,"x":538,"y":257},{"type":"mousemove","time":26637,"x":401,"y":238},{"type":"mousemove","time":26842,"x":368,"y":207},{"type":"mousemove","time":27065,"x":368,"y":206},{"type":"mousedown","time":27142,"x":368,"y":206},{"type":"mouseup","time":27158,"x":368,"y":206},{"time":27159,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":28240,"x":368,"y":206},{"type":"mousemove","time":28458,"x":405,"y":273},{"type":"mousemove","time":28672,"x":454,"y":310},{"type":"mousemove","time":28896,"x":473,"y":327}],"scrollY":2763,"scrollX":0,"timestamp":1569247963371}] \ No newline at end of file diff --git a/test/runTest/actions/dataZoomHighPrecision.json b/test/runTest/actions/dataZoomHighPrecision.json new file mode 100644 index 0000000000..bfdd6e4da2 --- /dev/null +++ b/test/runTest/actions/dataZoomHighPrecision.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":404,"x":670,"y":84},{"type":"mouseup","time":504,"x":670,"y":84},{"time":505,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":571,"x":669,"y":84},{"type":"mousemove","time":773,"x":448,"y":161},{"type":"mousemove","time":973,"x":420,"y":168},{"type":"mousedown","time":1254,"x":420,"y":168},{"type":"mousemove","time":1438,"x":423,"y":168},{"type":"mousemove","time":1642,"x":475,"y":173},{"type":"mousemove","time":1842,"x":485,"y":175},{"type":"mousemove","time":1959,"x":485,"y":175},{"type":"mousemove","time":2160,"x":486,"y":184},{"type":"mouseup","time":2477,"x":486,"y":184},{"time":2478,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568038314770},{"name":"Action 2","ops":[{"type":"screenshot","time":660}],"scrollY":537,"scrollX":0,"timestamp":1568038371062},{"name":"Action 3","ops":[{"type":"mousedown","time":815,"x":770,"y":185},{"type":"mousemove","time":1039,"x":770,"y":187},{"type":"mousemove","time":1241,"x":772,"y":231},{"type":"mousemove","time":1442,"x":768,"y":327},{"type":"mousemove","time":1644,"x":768,"y":357},{"type":"mouseup","time":1988,"x":768,"y":357},{"time":1989,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2508,"x":768,"y":360},{"type":"mousemove","time":2708,"x":767,"y":373},{"type":"mousemove","time":2908,"x":767,"y":379},{"type":"mousemove","time":3115,"x":767,"y":380},{"type":"screenshot","time":3915}],"scrollY":998,"scrollX":0,"timestamp":1568038405011}] \ No newline at end of file diff --git a/test/runTest/actions/dynamic-splitNumber.json b/test/runTest/actions/dynamic-splitNumber.json new file mode 100644 index 0000000000..ba3739910c --- /dev/null +++ b/test/runTest/actions/dynamic-splitNumber.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":751,"x":786,"y":467},{"type":"mousemove","time":954,"x":786,"y":466},{"type":"mousemove","time":1157,"x":754,"y":390},{"type":"mousemove","time":1364,"x":722,"y":327},{"type":"mousemove","time":1565,"x":718,"y":316},{"type":"mouseup","time":1832,"x":718,"y":316},{"time":1833,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":2447,"x":718,"y":316},{"type":"mousemove","time":2536,"x":718,"y":314},{"type":"mousemove","time":2737,"x":708,"y":236},{"type":"mousemove","time":2942,"x":697,"y":192},{"type":"mousemove","time":3142,"x":696,"y":181},{"type":"mouseup","time":3497,"x":696,"y":181},{"time":3498,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":3973,"x":696,"y":181},{"type":"mousemove","time":4090,"x":696,"y":179},{"type":"mousemove","time":4290,"x":684,"y":123},{"type":"mousemove","time":4490,"x":682,"y":108},{"type":"mousemove","time":4696,"x":682,"y":106},{"type":"mousemove","time":4897,"x":682,"y":102},{"type":"mouseup","time":5432,"x":682,"y":102},{"time":5433,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":6243,"x":682,"y":102},{"type":"mousemove","time":6326,"x":682,"y":103},{"type":"mousemove","time":6532,"x":693,"y":150},{"type":"mousemove","time":6732,"x":703,"y":218},{"type":"mousemove","time":6993,"x":704,"y":237},{"type":"mouseup","time":7444,"x":704,"y":237},{"time":7445,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568038444477}] \ No newline at end of file diff --git a/test/runTest/actions/ec-event.json b/test/runTest/actions/ec-event.json new file mode 100644 index 0000000000..9d7d16527c --- /dev/null +++ b/test/runTest/actions/ec-event.json @@ -0,0 +1,192 @@ +[ + { + "name": "Action 1", + "ops": [ + { "type": "mousedown", "time": 624, "x": 397, "y": 304 }, + { "type": "mouseup", "time": 715, "x": 397, "y": 304 }, + { "type": "mousemove", "time": 1088, "x": 397, "y": 305 }, + { "type": "mousemove", "time": 1288, "x": 409, "y": 451 }, + { "type": "mousemove", "time": 1500, "x": 410, "y": 473 }, + { "type": "mousemove", "time": 1701, "x": 409, "y": 483 }, + { "type": "mousemove", "time": 1917, "x": 408, "y": 483 }, + { "type": "mousedown", "time": 2161, "x": 408, "y": 483 }, + { "type": "mouseup", "time": 2272, "x": 408, "y": 483 }, + { "type": "mousemove", "time": 3142, "x": 410, "y": 482 }, + { "type": "mousemove", "time": 3343, "x": 626, "y": 392 }, + { "type": "mousemove", "time": 3553, "x": 694, "y": 332 }, + { "type": "mousemove", "time": 3753, "x": 713, "y": 318 }, + { "type": "mousemove", "time": 3953, "x": 734, "y": 320 }, + { "type": "mousemove", "time": 4187, "x": 738, "y": 330 }, + { "type": "mousemove", "time": 4424, "x": 738, "y": 330 }, + { "type": "mousedown", "time": 4523, "x": 738, "y": 330 }, + { "type": "mouseup", "time": 4639, "x": 738, "y": 330 }, + { "type": "mousemove", "time": 6172, "x": 737, "y": 330 }, + { "type": "mousemove", "time": 6373, "x": 227, "y": 306 }, + { "type": "mousemove", "time": 6574, "x": 244, "y": 325 }, + { "type": "mousemove", "time": 6774, "x": 261, "y": 343 }, + { "type": "mousemove", "time": 6982, "x": 273, "y": 351 }, + { "type": "mousedown", "time": 7421, "x": 273, "y": 351 }, + { "type": "mouseup", "time": 7505, "x": 273, "y": 351 }, + { "type": "mousemove", "time": 8619, "x": 273, "y": 349 }, + { "type": "mousemove", "time": 8821, "x": 271, "y": 334 }, + { "type": "mousemove", "time": 9024, "x": 271, "y": 332 }, + { "type": "mousemove", "time": 9224, "x": 271, "y": 331 }, + { "type": "mousedown", "time": 10031, "x": 271, "y": 331 }, + { "type": "mouseup", "time": 10103, "x": 271, "y": 331 } + ], + "scrollY": 0, + "scrollX": 0, + "timestamp": 1568038506039 + }, + { + "name": "Action 2", + "ops": [ + { "type": "mousedown", "time": 467, "x": 400, "y": 314 }, + { "type": "mouseup", "time": 576, "x": 400, "y": 314 }, + { "type": "mousemove", "time": 1000, "x": 399, "y": 320 }, + { "type": "mousemove", "time": 1201, "x": 390, "y": 363 }, + { "type": "mousemove", "time": 1410, "x": 394, "y": 384 }, + { "type": "mousemove", "time": 1610, "x": 394, "y": 388 }, + { "type": "mousemove", "time": 1867, "x": 401, "y": 395 }, + { "type": "mousedown", "time": 1931, "x": 401, "y": 395 }, + { "type": "mouseup", "time": 2044, "x": 401, "y": 395 }, + { "type": "mousemove", "time": 2176, "x": 400, "y": 395 }, + { "type": "mousemove", "time": 2377, "x": 309, "y": 398 }, + { "type": "mousemove", "time": 2577, "x": 277, "y": 404 }, + { "type": "mousemove", "time": 2777, "x": 261, "y": 464 }, + { "type": "mousemove", "time": 2978, "x": 265, "y": 488 }, + { "type": "mousemove", "time": 3181, "x": 271, "y": 479 }, + { "type": "mousemove", "time": 3383, "x": 271, "y": 479 }, + { "type": "mousedown", "time": 3398, "x": 271, "y": 479 }, + { "type": "mouseup", "time": 3495, "x": 271, "y": 479 }, + { "type": "mousemove", "time": 3560, "x": 271, "y": 479 }, + { "type": "mousemove", "time": 4011, "x": 267, "y": 478 }, + { "type": "mousemove", "time": 4212, "x": 146, "y": 423 }, + { "type": "mousemove", "time": 4412, "x": 155, "y": 410 }, + { "type": "mousemove", "time": 4616, "x": 144, "y": 405 }, + { "type": "mousedown", "time": 4816, "x": 142, "y": 405 }, + { "type": "mousemove", "time": 4833, "x": 142, "y": 405 }, + { "type": "mouseup", "time": 4899, "x": 142, "y": 405 }, + { "type": "mousemove", "time": 5481, "x": 142, "y": 406 }, + { "type": "mousemove", "time": 5686, "x": 129, "y": 485 }, + { "type": "mousemove", "time": 5887, "x": 127, "y": 494 }, + { "type": "mousemove", "time": 6092, "x": 141, "y": 496 }, + { "type": "mousemove", "time": 6292, "x": 146, "y": 495 }, + { "type": "mousedown", "time": 6468, "x": 146, "y": 495 }, + { "type": "mousemove", "time": 6502, "x": 146, "y": 495 }, + { "type": "mouseup", "time": 6550, "x": 146, "y": 495 }, + { "type": "mousemove", "time": 6835, "x": 147, "y": 497 }, + { "type": "mousemove", "time": 7035, "x": 239, "y": 552 }, + { "type": "mousemove", "time": 7243, "x": 265, "y": 558 }, + { "type": "mousemove", "time": 7456, "x": 267, "y": 559 }, + { "type": "mousedown", "time": 7773, "x": 267, "y": 559 }, + { "type": "mouseup", "time": 7851, "x": 267, "y": 559 }, + { "type": "mousemove", "time": 8002, "x": 266, "y": 558 }, + { "type": "mousemove", "time": 8211, "x": 273, "y": 551 }, + { "type": "mousemove", "time": 8411, "x": 640, "y": 407 }, + { "type": "mousemove", "time": 8615, "x": 707, "y": 399 }, + { "type": "mousemove", "time": 8818, "x": 736, "y": 399 }, + { "type": "mousedown", "time": 8980, "x": 738, "y": 400 }, + { "type": "mousemove", "time": 9054, "x": 738, "y": 400 }, + { "type": "mouseup", "time": 9083, "x": 738, "y": 400 }, + { "type": "mousemove", "time": 9277, "x": 737, "y": 400 }, + { "type": "mousemove", "time": 9487, "x": 475, "y": 368 }, + { "type": "mousemove", "time": 9687, "x": 16, "y": 291 }, + { "type": "mousemove", "time": 9890, "x": 44, "y": 303 }, + { "type": "mousemove", "time": 10091, "x": 57, "y": 318 }, + { "type": "mousedown", "time": 10345, "x": 57, "y": 318 }, + { "type": "mouseup", "time": 10450, "x": 57, "y": 318 }, + { "type": "mousemove", "time": 11096, "x": 57, "y": 318 }, + { "type": "mousemove", "time": 11296, "x": 57, "y": 318 } + ], + "scrollY": 513, + "scrollX": 0, + "timestamp": 1568038534148 + }, + { + "name": "Action 3", + "ops": [ + { "type": "mousedown", "time": 525, "x": 160, "y": 196 }, + { "type": "mouseup", "time": 615, "x": 160, "y": 196 }, + { "type": "mousemove", "time": 811, "x": 160, "y": 197 }, + { "type": "mousemove", "time": 1011, "x": 160, "y": 242 }, + { "type": "mousemove", "time": 1225, "x": 160, "y": 243 }, + { "type": "mousedown", "time": 1460, "x": 160, "y": 243 }, + { "type": "mouseup", "time": 1559, "x": 160, "y": 243 }, + { "type": "mousemove", "time": 1750, "x": 160, "y": 243 }, + { "type": "mousemove", "time": 1950, "x": 162, "y": 288 }, + { "type": "mousemove", "time": 2159, "x": 162, "y": 292 }, + { "type": "mousedown", "time": 2453, "x": 162, "y": 292 }, + { "type": "mouseup", "time": 2528, "x": 162, "y": 292 }, + { "type": "mousemove", "time": 2685, "x": 162, "y": 292 }, + { "type": "mousemove", "time": 2886, "x": 163, "y": 314 }, + { "type": "mousemove", "time": 3094, "x": 163, "y": 319 }, + { "type": "mousedown", "time": 3228, "x": 163, "y": 319 }, + { "type": "mouseup", "time": 3319, "x": 163, "y": 319 }, + { "type": "mousemove", "time": 3462, "x": 163, "y": 319 }, + { "type": "mousemove", "time": 3662, "x": 166, "y": 338 }, + { "type": "mousemove", "time": 3881, "x": 167, "y": 345 }, + { "type": "mousemove", "time": 4081, "x": 167, "y": 350 }, + { "type": "mousedown", "time": 4089, "x": 167, "y": 350 }, + { "type": "mouseup", "time": 4200, "x": 167, "y": 350 }, + { "type": "mousemove", "time": 4319, "x": 167, "y": 350 }, + { "type": "mousemove", "time": 4520, "x": 167, "y": 351 }, + { "type": "mousemove", "time": 4723, "x": 167, "y": 352 }, + { "type": "mousemove", "time": 4823, "x": 167, "y": 353 }, + { "type": "mousemove", "time": 5023, "x": 165, "y": 373 }, + { "type": "mousemove", "time": 5238, "x": 166, "y": 382 }, + { "type": "mousedown", "time": 5546, "x": 166, "y": 382 }, + { "type": "mouseup", "time": 5641, "x": 166, "y": 382 } + ], + "scrollY": 1080, + "scrollX": 0, + "timestamp": 1568038549854 + }, + { + "name": "Action 4", + "ops": [ + { "type": "mousedown", "time": 382, "x": 122, "y": 328 }, + { "type": "mouseup", "time": 446, "x": 122, "y": 328 }, + { "type": "mousemove", "time": 619, "x": 122, "y": 331 }, + { "type": "mousemove", "time": 820, "x": 119, "y": 416 }, + { "type": "mousemove", "time": 1031, "x": 119, "y": 416 }, + { "type": "mousedown", "time": 1213, "x": 121, "y": 412 }, + { "type": "mousemove", "time": 1231, "x": 121, "y": 412 }, + { "type": "mouseup", "time": 1311, "x": 121, "y": 412 }, + { "type": "mousemove", "time": 1379, "x": 121, "y": 414 }, + { "type": "mousemove", "time": 1579, "x": 118, "y": 476 }, + { "type": "mousemove", "time": 1783, "x": 119, "y": 474 }, + { "type": "mousemove", "time": 1983, "x": 119, "y": 468 }, + { "type": "mousedown", "time": 2046, "x": 119, "y": 468 }, + { "type": "mouseup", "time": 2134, "x": 119, "y": 468 }, + { "type": "mousemove", "time": 2269, "x": 119, "y": 467 }, + { "type": "mousemove", "time": 2469, "x": 118, "y": 348 }, + { "type": "mousemove", "time": 2679, "x": 119, "y": 326 }, + { "type": "mousemove", "time": 2882, "x": 112, "y": 284 }, + { "type": "mousedown", "time": 3046, "x": 112, "y": 284 }, + { "type": "mouseup", "time": 3134, "x": 112, "y": 284 }, + { "type": "mousemove", "time": 3715, "x": 112, "y": 284 }, + { "type": "mousemove", "time": 3916, "x": 112, "y": 329 }, + { "type": "mousemove", "time": 4131, "x": 112, "y": 331 }, + { "type": "mousedown", "time": 4181, "x": 112, "y": 331 }, + { "type": "mouseup", "time": 4265, "x": 112, "y": 331 }, + { "type": "mousemove", "time": 4381, "x": 112, "y": 331 }, + { "type": "mousemove", "time": 4533, "x": 112, "y": 333 }, + { "type": "mousemove", "time": 4733, "x": 114, "y": 391 }, + { "type": "mousemove", "time": 4950, "x": 114, "y": 416 }, + { "type": "mousemove", "time": 5163, "x": 113, "y": 416 }, + { "type": "mousedown", "time": 5252, "x": 113, "y": 416 }, + { "type": "mouseup", "time": 5385, "x": 113, "y": 416 }, + { "type": "mousemove", "time": 5489, "x": 114, "y": 421 }, + { "type": "mousemove", "time": 5689, "x": 111, "y": 473 }, + { "type": "mousemove", "time": 5911, "x": 111, "y": 472 }, + { "type": "mousemove", "time": 6112, "x": 111, "y": 466 }, + { "type": "mousedown", "time": 6208, "x": 111, "y": 466 }, + { "type": "mouseup", "time": 6294, "x": 112, "y": 466 }, + { "type": "mousemove", "time": 6429, "x": 112, "y": 466 } + ], + "scrollY": 1468, + "scrollX": 0, + "timestamp": 1568038566381 + } +] diff --git a/test/runTest/actions/funnel.json b/test/runTest/actions/funnel.json new file mode 100644 index 0000000000..e8a34b66e1 --- /dev/null +++ b/test/runTest/actions/funnel.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"descending","time":1595,"target":"select"},{"time":1596,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1885,"x":666,"y":41},{"type":"mousemove","time":2085,"x":665,"y":41},{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string:nth-child(2)>div>div.c>select","value":"left","time":2995,"target":"select"},{"time":2996,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3009,"x":683,"y":44},{"type":"mousemove","time":3209,"x":683,"y":43},{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string:nth-child(2)>div>div.c>select","value":"right","time":4236,"target":"select"},{"time":4237,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4436,"x":670,"y":57},{"type":"mousemove","time":4637,"x":657,"y":65},{"type":"mousemove","time":4837,"x":652,"y":70},{"type":"mousemove","time":5170,"x":653,"y":70},{"type":"mousedown","time":5310,"x":653,"y":70},{"type":"mousemove","time":5370,"x":654,"y":70},{"type":"mousemove","time":5572,"x":680,"y":69},{"type":"mousemove","time":5776,"x":692,"y":69},{"type":"mousemove","time":5983,"x":706,"y":68},{"type":"mousemove","time":6188,"x":707,"y":68},{"type":"mousemove","time":6308,"x":708,"y":68},{"type":"mousemove","time":6508,"x":712,"y":68},{"type":"mouseup","time":6707,"x":712,"y":68},{"time":6708,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568040728924},{"name":"Action 2","ops":[{"type":"mousedown","time":346,"x":284,"y":7},{"type":"mouseup","time":442,"x":284,"y":7},{"time":443,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":474,"x":284,"y":7},{"type":"mousemove","time":675,"x":317,"y":7},{"type":"mousedown","time":863,"x":318,"y":7},{"type":"mousemove","time":884,"x":318,"y":7},{"type":"mouseup","time":974,"x":318,"y":7},{"time":975,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":985,"x":318,"y":8},{"type":"mousemove","time":1192,"x":387,"y":14},{"type":"mousedown","time":1460,"x":387,"y":14},{"type":"mouseup","time":1545,"x":387,"y":14},{"time":1546,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1556,"x":388,"y":14},{"type":"mousemove","time":1759,"x":443,"y":13},{"type":"mousemove","time":1960,"x":448,"y":12},{"type":"mousedown","time":1976,"x":448,"y":12},{"type":"mouseup","time":2061,"x":448,"y":12},{"time":2062,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2160,"x":474,"y":11},{"type":"mousemove","time":2360,"x":496,"y":10},{"type":"mousedown","time":2535,"x":505,"y":8},{"type":"mousemove","time":2568,"x":505,"y":8},{"type":"mouseup","time":2627,"x":505,"y":8},{"time":2628,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":3204,"x":505,"y":8},{"type":"mouseup","time":3276,"x":505,"y":8},{"time":3277,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3467,"x":505,"y":7},{"type":"mousemove","time":3667,"x":466,"y":12},{"type":"mousemove","time":3867,"x":466,"y":12},{"type":"mousemove","time":3898,"x":467,"y":12},{"type":"mousemove","time":4099,"x":624,"y":33},{"type":"mousemove","time":4314,"x":645,"y":23},{"type":"mousemove","time":4514,"x":651,"y":19},{"type":"mousemove","time":4751,"x":653,"y":17},{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"ascending","time":6504,"target":"select"},{"time":6505,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7056,"x":655,"y":27},{"type":"mousemove","time":7257,"x":658,"y":42},{"type":"mousemove","time":8507,"x":663,"y":36},{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string:nth-child(2)>div>div.c>select","value":"left","time":8520,"target":"select"},{"time":8521,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":8707,"x":662,"y":39},{"type":"mousemove","time":8908,"x":662,"y":40},{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string:nth-child(2)>div>div.c>select","value":"inside","time":10016,"target":"select"},{"time":10017,"delay":400,"type":"screenshot-auto"},{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string:nth-child(2)>div>div.c>select","value":"right","time":10866,"target":"select"},{"time":10867,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568040740684}] \ No newline at end of file diff --git a/test/runTest/actions/geo-map.json b/test/runTest/actions/geo-map.json new file mode 100644 index 0000000000..c6138d7f10 --- /dev/null +++ b/test/runTest/actions/geo-map.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":750,"x":67,"y":8},{"type":"mouseup","time":835,"x":67,"y":8},{"time":836,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1086,"x":67,"y":8},{"type":"mousemove","time":1291,"x":65,"y":29},{"type":"mousemove","time":1491,"x":65,"y":30},{"type":"mousedown","time":1667,"x":65,"y":30},{"type":"mouseup","time":1785,"x":65,"y":30},{"time":1786,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2142,"x":65,"y":31},{"type":"mousemove","time":2342,"x":61,"y":61},{"type":"mousemove","time":2568,"x":61,"y":61},{"type":"mousedown","time":2652,"x":61,"y":61},{"type":"mouseup","time":2725,"x":61,"y":61},{"time":2726,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":3702,"x":61,"y":61},{"type":"mouseup","time":3775,"x":61,"y":61},{"time":3776,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3955,"x":61,"y":61},{"type":"mousemove","time":4155,"x":68,"y":46},{"type":"mousemove","time":4362,"x":71,"y":37},{"type":"mousedown","time":4510,"x":71,"y":37},{"type":"mouseup","time":4605,"x":71,"y":37},{"time":4606,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5004,"x":71,"y":36},{"type":"mousemove","time":5226,"x":72,"y":16},{"type":"mousedown","time":5406,"x":72,"y":15},{"type":"mousemove","time":5426,"x":72,"y":15},{"type":"mouseup","time":5493,"x":72,"y":15},{"time":5494,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6071,"x":72,"y":16},{"type":"mousemove","time":6272,"x":69,"y":35},{"type":"mousemove","time":6486,"x":69,"y":35},{"type":"mousedown","time":6614,"x":69,"y":35},{"type":"mouseup","time":6697,"x":69,"y":35},{"time":6698,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7099,"x":69,"y":36},{"type":"mousemove","time":7299,"x":66,"y":56},{"type":"mousemove","time":7499,"x":62,"y":65},{"type":"mousedown","time":7766,"x":62,"y":65},{"type":"mouseup","time":7841,"x":62,"y":65},{"time":7842,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568040771612},{"name":"Action 2","ops":[{"type":"mousedown","time":354,"x":33,"y":430},{"type":"mousemove","time":508,"x":33,"y":431},{"type":"mousemove","time":718,"x":33,"y":454},{"type":"mousemove","time":967,"x":32,"y":480},{"type":"mousemove","time":1197,"x":29,"y":503},{"type":"mousemove","time":1404,"x":28,"y":513},{"type":"mousemove","time":1609,"x":28,"y":516},{"type":"mousemove","time":1877,"x":28,"y":517},{"type":"mouseup","time":2065,"x":28,"y":517},{"time":2066,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2192,"x":28,"y":518},{"type":"mousemove","time":2404,"x":9,"y":543},{"type":"mousemove","time":3082,"x":10,"y":543},{"type":"screenshot","time":4783},{"type":"mousedown","time":5815,"x":10,"y":543},{"type":"mousemove","time":5978,"x":10,"y":542},{"type":"mousemove","time":6198,"x":11,"y":518},{"type":"mousemove","time":6407,"x":13,"y":496},{"type":"mousemove","time":6611,"x":13,"y":475},{"type":"mousemove","time":6814,"x":13,"y":474},{"type":"mouseup","time":7205,"x":13,"y":474},{"time":7206,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7705,"x":13,"y":474},{"type":"mousemove","time":7906,"x":13,"y":476},{"type":"screenshot","time":8339}],"scrollY":0,"scrollX":0,"timestamp":1568040787168},{"name":"Action 3","ops":[{"type":"mousemove","time":550,"x":429,"y":336},{"type":"mousedown","time":674,"x":431,"y":335},{"type":"mousemove","time":793,"x":431,"y":336},{"type":"mousemove","time":1006,"x":346,"y":462},{"type":"mousemove","time":1207,"x":350,"y":458},{"type":"mouseup","time":1343,"x":350,"y":458},{"time":1344,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1410,"x":350,"y":458},{"type":"mousemove","time":1603,"x":350,"y":457},{"type":"mousewheel","time":1686,"x":350,"y":457,"deltaY":4.000244140625},{"type":"mousewheel","time":1719,"x":350,"y":457,"deltaY":40.41015625},{"type":"mousewheel","time":1748,"x":350,"y":457,"deltaY":377.4566650390625},{"type":"mousewheel","time":1775,"x":350,"y":457,"deltaY":252.0208740234375},{"type":"mousewheel","time":1801,"x":350,"y":457,"deltaY":274.16015625},{"type":"mousewheel","time":1901,"x":350,"y":457,"deltaY":263.7664794921875},{"type":"mousemove","time":2236,"x":347,"y":454},{"type":"mousemove","time":2441,"x":308,"y":411},{"type":"mousedown","time":2514,"x":308,"y":411},{"type":"mousemove","time":2644,"x":443,"y":385},{"type":"mousemove","time":2855,"x":648,"y":301},{"type":"mousemove","time":3059,"x":670,"y":288},{"type":"mouseup","time":3161,"x":670,"y":288},{"time":3162,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3270,"x":662,"y":291},{"type":"mousemove","time":3476,"x":581,"y":308},{"type":"mousewheel","time":3521,"x":581,"y":308,"deltaY":-4.000244140625},{"type":"mousewheel","time":3545,"x":581,"y":308,"deltaY":-37.410888671875},{"type":"mousewheel","time":3570,"x":581,"y":308,"deltaY":-385.2349853515625},{"type":"mousewheel","time":3602,"x":581,"y":308,"deltaY":-252.042236328125},{"type":"mousewheel","time":3627,"x":581,"y":308,"deltaY":-271.1181640625}],"scrollY":0,"scrollX":0,"timestamp":1568969626016}] \ No newline at end of file diff --git a/test/runTest/actions/geoScatter.json b/test/runTest/actions/geoScatter.json new file mode 100644 index 0000000000..2c09260c07 --- /dev/null +++ b/test/runTest/actions/geoScatter.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousewheel","time":463,"x":228,"y":358,"deltaY":4.000244140625},{"type":"mousewheel","time":495,"x":228,"y":358,"deltaY":34.5074462890625},{"type":"mousewheel","time":529,"x":228,"y":358,"deltaY":138.98681640625},{"type":"mousewheel","time":562,"x":228,"y":358,"deltaY":201.400146484375},{"type":"mousewheel","time":595,"x":228,"y":358,"deltaY":510.4364013671875},{"type":"mousemove","time":996,"x":231,"y":357},{"type":"mousemove","time":1196,"x":270,"y":336},{"type":"mousemove","time":1407,"x":289,"y":312},{"type":"mousedown","time":1437,"x":289,"y":312},{"type":"mousemove","time":1614,"x":265,"y":417},{"type":"mousemove","time":1827,"x":253,"y":454},{"type":"mouseup","time":1992,"x":252,"y":461},{"time":1993,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2038,"x":252,"y":461},{"type":"mousemove","time":2247,"x":232,"y":471},{"type":"mousemove","time":2448,"x":185,"y":517},{"type":"mousemove","time":2654,"x":179,"y":527},{"type":"mousedown","time":2689,"x":179,"y":527},{"type":"mousemove","time":2865,"x":240,"y":419},{"type":"mousemove","time":3069,"x":264,"y":350},{"type":"mouseup","time":3272,"x":264,"y":350},{"time":3273,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3370,"x":264,"y":350},{"type":"mousemove","time":3565,"x":267,"y":350},{"type":"mousemove","time":3765,"x":534,"y":339},{"type":"mousemove","time":3971,"x":553,"y":336},{"type":"mousedown","time":4338,"x":553,"y":336},{"type":"mousemove","time":4449,"x":561,"y":339},{"type":"mousemove","time":4649,"x":667,"y":380},{"type":"mousemove","time":4856,"x":682,"y":388},{"type":"mouseup","time":4963,"x":682,"y":388},{"time":4964,"delay":400,"type":"screenshot-auto"},{"type":"mousewheel","time":5536,"x":682,"y":388,"deltaY":-4.000244140625},{"type":"mousewheel","time":5560,"x":682,"y":388,"deltaY":-37.3760986328125},{"type":"mousewheel","time":5584,"x":682,"y":388,"deltaY":-388.734130859375},{"type":"mousewheel","time":5618,"x":682,"y":388,"deltaY":-245.4669189453125},{"type":"mousewheel","time":5769,"x":682,"y":388,"deltaY":-227.8857421875},{"type":"mousedown","time":6314,"x":682,"y":388},{"type":"mouseup","time":6411,"x":682,"y":388},{"time":6412,"delay":400,"type":"screenshot-auto"},{"type":"mousewheel","time":7135,"x":682,"y":388,"deltaY":4.000244140625},{"type":"mousewheel","time":7170,"x":682,"y":388,"deltaY":37.3944091796875},{"type":"mousewheel","time":7203,"x":682,"y":388,"deltaY":154.07958984375},{"type":"mousewheel","time":7252,"x":682,"y":388,"deltaY":765.1287841796875},{"type":"mousewheel","time":7285,"x":682,"y":388,"deltaY":637.340087890625},{"type":"mousewheel","time":7669,"x":682,"y":388,"deltaY":4.000244140625},{"type":"mousewheel","time":7702,"x":682,"y":388,"deltaY":37.39013671875},{"type":"mousewheel","time":7736,"x":682,"y":388,"deltaY":369.732666015625},{"type":"mousewheel","time":7761,"x":682,"y":388,"deltaY":252.01904296875},{"type":"mousewheel","time":7787,"x":682,"y":388,"deltaY":277.18505859375},{"type":"mousewheel","time":7813,"x":682,"y":388,"deltaY":288.475341796875},{"type":"mousewheel","time":7869,"x":682,"y":388,"deltaY":299.2425537109375},{"type":"mousedown","time":8495,"x":682,"y":388},{"type":"mouseup","time":8601,"x":682,"y":388},{"time":8602,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":8938,"x":679,"y":386},{"type":"mousemove","time":9143,"x":658,"y":365},{"type":"mousemove","time":9355,"x":365,"y":262},{"type":"mousemove","time":9571,"x":337,"y":195},{"type":"mousedown","time":9746,"x":315,"y":130},{"type":"mousemove","time":9788,"x":316,"y":135},{"type":"mousemove","time":10000,"x":356,"y":322},{"type":"mousemove","time":10205,"x":382,"y":434},{"type":"mouseup","time":10381,"x":382,"y":435},{"time":10382,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":10412,"x":382,"y":435}],"scrollY":0,"scrollX":0,"timestamp":1568969684086}] \ No newline at end of file diff --git a/test/runTest/actions/getOption.json b/test/runTest/actions/getOption.json new file mode 100644 index 0000000000..b28a783023 --- /dev/null +++ b/test/runTest/actions/getOption.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":663,"x":47,"y":12},{"type":"mouseup","time":770,"x":47,"y":12},{"time":771,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1443,"x":51,"y":12},{"type":"mousemove","time":1643,"x":109,"y":12},{"type":"mousemove","time":1853,"x":111,"y":11},{"type":"mousedown","time":1889,"x":111,"y":11},{"type":"mouseup","time":1973,"x":111,"y":11},{"time":1974,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2656,"x":113,"y":11},{"type":"mousemove","time":2856,"x":226,"y":12},{"type":"mousemove","time":3057,"x":261,"y":8},{"type":"mousedown","time":3189,"x":261,"y":8},{"type":"mouseup","time":3257,"x":261,"y":8},{"time":3258,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3291,"x":261,"y":8}],"scrollY":0,"scrollX":0,"timestamp":1568040893235}] \ No newline at end of file diff --git a/test/runTest/actions/graph-grid.json b/test/runTest/actions/graph-grid.json new file mode 100644 index 0000000000..975e765d4a --- /dev/null +++ b/test/runTest/actions/graph-grid.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":466,"x":755,"y":16},{"type":"mouseup","time":556,"x":755,"y":16},{"time":557,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":659,"x":753,"y":16},{"type":"mousemove","time":859,"x":409,"y":147},{"type":"mousemove","time":1059,"x":274,"y":165},{"type":"mousedown","time":1080,"x":274,"y":166},{"type":"mousemove","time":1262,"x":418,"y":275},{"type":"mousemove","time":1465,"x":552,"y":383},{"type":"mouseup","time":1825,"x":552,"y":383},{"time":1826,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1867,"x":552,"y":383},{"type":"mousemove","time":2068,"x":551,"y":383},{"type":"mousemove","time":2145,"x":551,"y":383},{"type":"mousemove","time":2345,"x":549,"y":385},{"type":"mousemove","time":2550,"x":458,"y":342},{"type":"mousemove","time":2751,"x":309,"y":287},{"type":"mousedown","time":2851,"x":310,"y":289},{"type":"mousemove","time":2962,"x":367,"y":295},{"type":"mousemove","time":3162,"x":407,"y":299},{"type":"mousemove","time":3434,"x":416,"y":299},{"type":"mouseup","time":3495,"x":416,"y":299},{"time":3496,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3563,"x":415,"y":299},{"type":"mousemove","time":3763,"x":408,"y":299},{"type":"mousemove","time":3963,"x":407,"y":300},{"type":"mousemove","time":4163,"x":406,"y":300}],"scrollY":0,"scrollX":0,"timestamp":1568040920597}] \ No newline at end of file diff --git a/test/runTest/actions/graph-simple.json b/test/runTest/actions/graph-simple.json new file mode 100644 index 0000000000..dc5d55d5a3 --- /dev/null +++ b/test/runTest/actions/graph-simple.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":445,"x":418,"y":139},{"type":"mousemove","time":646,"x":391,"y":174},{"type":"mousemove","time":856,"x":389,"y":181},{"type":"mousemove","time":977,"x":390,"y":181},{"type":"mousemove","time":1177,"x":395,"y":184},{"type":"mousemove","time":1384,"x":396,"y":184},{"type":"mousemove","time":1640,"x":396,"y":184},{"type":"screenshot","time":2026},{"type":"mousemove","time":2567,"x":396,"y":184},{"type":"mousemove","time":2767,"x":408,"y":284},{"type":"mousemove","time":2977,"x":407,"y":306},{"type":"mousemove","time":3178,"x":407,"y":324},{"type":"screenshot","time":3928},{"type":"mousemove","time":4285,"x":412,"y":325},{"type":"mousemove","time":4485,"x":634,"y":371},{"type":"mousemove","time":4704,"x":648,"y":380},{"type":"screenshot","time":5897},{"type":"mousemove","time":6314,"x":647,"y":380},{"type":"mousemove","time":6514,"x":601,"y":403},{"type":"mousemove","time":6714,"x":576,"y":428},{"type":"mousemove","time":6916,"x":575,"y":435},{"type":"mousemove","time":7116,"x":498,"y":478},{"type":"mousemove","time":7317,"x":421,"y":562},{"type":"mousemove","time":7518,"x":401,"y":579},{"type":"mousemove","time":7740,"x":400,"y":579},{"type":"mousemove","time":7965,"x":400,"y":579},{"type":"screenshot","time":8563},{"type":"mousemove","time":8789,"x":400,"y":579},{"type":"mousemove","time":8989,"x":412,"y":490},{"type":"mousemove","time":9190,"x":410,"y":452},{"type":"mousemove","time":9394,"x":413,"y":440},{"type":"mousemove","time":9594,"x":416,"y":433},{"type":"mousemove","time":9840,"x":416,"y":432},{"type":"screenshot","time":10558},{"type":"mousemove","time":10832,"x":416,"y":431},{"type":"mousemove","time":11033,"x":251,"y":406},{"type":"mousemove","time":11245,"x":155,"y":391},{"type":"mousemove","time":11446,"x":149,"y":391},{"type":"mousemove","time":11678,"x":150,"y":389},{"type":"screenshot","time":12559}],"scrollY":19,"scrollX":0,"timestamp":1568041022237},{"name":"Action 2","ops":[{"type":"mousemove","time":227,"x":268,"y":204},{"type":"mousemove","time":435,"x":337,"y":290},{"type":"mousemove","time":636,"x":343,"y":316},{"type":"mousemove","time":850,"x":343,"y":326},{"type":"mousemove","time":1116,"x":343,"y":326},{"type":"mousemove","time":1321,"x":352,"y":319},{"type":"mousemove","time":1521,"x":352,"y":319},{"type":"screenshot","time":2459},{"type":"mousemove","time":2701,"x":347,"y":319},{"type":"mousemove","time":2902,"x":213,"y":369},{"type":"mousemove","time":3102,"x":173,"y":373},{"type":"mousemove","time":3304,"x":151,"y":377},{"type":"screenshot","time":4138},{"type":"mousemove","time":4375,"x":151,"y":377},{"type":"mousemove","time":4575,"x":332,"y":382},{"type":"mousemove","time":4776,"x":503,"y":384},{"type":"mousemove","time":4977,"x":627,"y":380},{"type":"mousemove","time":5189,"x":645,"y":379},{"type":"mousemove","time":5406,"x":645,"y":379},{"type":"screenshot","time":6076}],"scrollY":659,"scrollX":0,"timestamp":1568041050662}] \ No newline at end of file diff --git a/test/runTest/actions/graph.json b/test/runTest/actions/graph.json new file mode 100644 index 0000000000..634b1f2b19 --- /dev/null +++ b/test/runTest/actions/graph.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"circular","time":1630,"target":"select"},{"time":1631,"delay":1500,"type":"screenshot-auto"},{"type":"mousemove","time":2290,"x":681,"y":21},{"type":"mousemove","time":2529,"x":683,"y":14},{"type":"mousemove","time":2797,"x":684,"y":13},{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"none","time":4351,"target":"select"},{"time":4352,"delay":1500,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568041093157},{"name":"Action 2","ops":[{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"circular","time":1619,"target":"select"},{"time":1620,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2973,"x":672,"y":29},{"type":"mousemove","time":3177,"x":670,"y":102},{"type":"mousemove","time":3378,"x":663,"y":125},{"type":"mousemove","time":3578,"x":656,"y":130},{"type":"mousemove","time":3812,"x":654,"y":128},{"type":"mousedown","time":3933,"x":654,"y":127},{"type":"mousemove","time":4012,"x":654,"y":127},{"type":"mouseup","time":4027,"x":654,"y":127},{"time":4028,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568041109823}] \ No newline at end of file diff --git a/test/runTest/actions/heatmap-map.json b/test/runTest/actions/heatmap-map.json new file mode 100644 index 0000000000..aa00b2b08d --- /dev/null +++ b/test/runTest/actions/heatmap-map.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":368,"x":67,"y":492},{"type":"mouseup","time":461,"x":67,"y":492},{"time":462,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":687,"x":67,"y":493},{"type":"mousemove","time":891,"x":63,"y":512},{"type":"mousedown","time":1427,"x":63,"y":512},{"type":"mouseup","time":1537,"x":63,"y":512},{"time":1538,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1805,"x":63,"y":513},{"type":"mousemove","time":2005,"x":56,"y":534},{"type":"mousemove","time":2207,"x":54,"y":539},{"type":"mousedown","time":2295,"x":54,"y":539},{"type":"mousemove","time":2310,"x":54,"y":539},{"type":"mouseup","time":2388,"x":54,"y":539},{"time":2389,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2705,"x":54,"y":540},{"type":"mousemove","time":2905,"x":53,"y":562},{"type":"mousemove","time":3105,"x":53,"y":563},{"type":"mousedown","time":3113,"x":53,"y":563},{"type":"mouseup","time":3222,"x":53,"y":563},{"time":3223,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3305,"x":53,"y":563},{"type":"mousemove","time":3923,"x":53,"y":563},{"type":"mousemove","time":4125,"x":35,"y":588},{"type":"mousedown","time":4257,"x":35,"y":588},{"type":"mouseup","time":4358,"x":35,"y":588},{"time":4359,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4380,"x":34,"y":588},{"type":"mousemove","time":4580,"x":34,"y":589},{"type":"mousemove","time":4814,"x":38,"y":589},{"type":"mousedown","time":5093,"x":38,"y":589},{"type":"mouseup","time":5176,"x":38,"y":589},{"time":5177,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5266,"x":40,"y":588},{"type":"mousemove","time":5475,"x":55,"y":574},{"type":"mousemove","time":5677,"x":71,"y":522},{"type":"mousemove","time":5879,"x":71,"y":506},{"type":"mousemove","time":6093,"x":68,"y":494},{"type":"mousedown","time":6152,"x":68,"y":494},{"type":"mouseup","time":6244,"x":68,"y":494},{"time":6245,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7045,"x":68,"y":495},{"type":"mousemove","time":7246,"x":63,"y":514},{"type":"mousedown","time":7328,"x":63,"y":514},{"type":"mouseup","time":7427,"x":63,"y":514},{"time":7428,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7611,"x":63,"y":514}],"scrollY":0,"scrollX":0,"timestamp":1568041143365}] \ No newline at end of file diff --git a/test/runTest/actions/heatmap.json b/test/runTest/actions/heatmap.json new file mode 100644 index 0000000000..e3cab3d80e --- /dev/null +++ b/test/runTest/actions/heatmap.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":460,"x":6,"y":476},{"type":"mousemove","time":663,"x":11,"y":497},{"type":"mousemove","time":863,"x":11,"y":505},{"type":"mousemove","time":1132,"x":11,"y":505},{"type":"mousedown","time":1165,"x":11,"y":505},{"type":"mouseup","time":1279,"x":11,"y":505},{"time":1280,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2295,"x":11,"y":504},{"type":"mousemove","time":2495,"x":46,"y":441},{"type":"mousemove","time":2700,"x":40,"y":438},{"type":"mousemove","time":2900,"x":34,"y":437},{"type":"mousedown","time":3073,"x":34,"y":437},{"type":"mousemove","time":3080,"x":34,"y":438},{"type":"mousemove","time":3290,"x":34,"y":473},{"type":"mousemove","time":3498,"x":34,"y":486},{"type":"mousemove","time":3698,"x":34,"y":490},{"type":"mousemove","time":3865,"x":34,"y":491},{"type":"mousemove","time":4067,"x":33,"y":492},{"type":"mousemove","time":4181,"x":33,"y":492},{"type":"mouseup","time":4331,"x":33,"y":492},{"time":4332,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5050,"x":32,"y":493},{"type":"mousemove","time":5253,"x":18,"y":522},{"type":"mousemove","time":5454,"x":18,"y":534},{"type":"mousemove","time":5654,"x":18,"y":535},{"type":"mousedown","time":5785,"x":18,"y":535},{"type":"mousemove","time":5875,"x":18,"y":534},{"type":"mousemove","time":6095,"x":16,"y":505},{"type":"mousemove","time":6302,"x":17,"y":492},{"type":"mousemove","time":6502,"x":17,"y":489},{"type":"mousemove","time":6710,"x":18,"y":488},{"type":"mouseup","time":6739,"x":18,"y":488},{"time":6740,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568041211164}] \ No newline at end of file diff --git a/test/runTest/actions/homepage3.json b/test/runTest/actions/homepage3.json new file mode 100644 index 0000000000..2388a6ea73 --- /dev/null +++ b/test/runTest/actions/homepage3.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":277,"x":272,"y":333},{"type":"mousemove","time":478,"x":317,"y":341},{"type":"screenshot","time":1277},{"type":"mousemove","time":1683,"x":320,"y":341},{"type":"mousemove","time":1886,"x":463,"y":349},{"type":"mousemove","time":2087,"x":469,"y":350},{"type":"screenshot","time":3314},{"type":"mousemove","time":4136,"x":469,"y":350},{"type":"mousemove","time":4338,"x":452,"y":298},{"type":"mousemove","time":4540,"x":386,"y":215},{"type":"mousemove","time":4741,"x":370,"y":202},{"type":"screenshot","time":5775},{"type":"mousedown","time":6550,"x":370,"y":202},{"type":"mousemove","time":6760,"x":370,"y":202},{"type":"mousemove","time":6969,"x":422,"y":201},{"type":"mousemove","time":7169,"x":455,"y":203},{"type":"mousemove","time":7370,"x":456,"y":203},{"type":"mouseup","time":7639,"x":456,"y":203},{"time":7640,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":8302,"x":456,"y":203},{"type":"mousemove","time":8507,"x":480,"y":370},{"type":"mousemove","time":8707,"x":474,"y":438},{"type":"mousemove","time":8907,"x":461,"y":435},{"type":"mousemove","time":9119,"x":461,"y":432},{"type":"mousedown","time":9337,"x":455,"y":432},{"type":"mousemove","time":9344,"x":455,"y":432},{"type":"mousemove","time":9438,"x":454,"y":432},{"type":"mousemove","time":9643,"x":396,"y":435},{"type":"mousemove","time":9843,"x":334,"y":438},{"type":"mousemove","time":10093,"x":314,"y":440},{"type":"mousemove","time":10315,"x":308,"y":443},{"type":"mouseup","time":10551,"x":308,"y":443},{"time":10552,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":11096,"x":311,"y":443},{"type":"mousemove","time":11297,"x":731,"y":432},{"type":"mousemove","time":11505,"x":797,"y":432},{"type":"mousemove","time":11582,"x":799,"y":431},{"type":"mousemove","time":11782,"x":755,"y":430},{"type":"mousemove","time":12022,"x":753,"y":430},{"type":"mousedown","time":12185,"x":753,"y":430},{"type":"mousemove","time":12319,"x":751,"y":430},{"type":"mousemove","time":12519,"x":716,"y":429},{"type":"mousemove","time":12732,"x":688,"y":427},{"type":"mouseup","time":12899,"x":688,"y":427},{"time":12900,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":12950,"x":687,"y":427},{"type":"mousedown","time":13407,"x":687,"y":427},{"type":"mousemove","time":13503,"x":687,"y":427},{"type":"mousemove","time":13705,"x":641,"y":426},{"type":"mousemove","time":13905,"x":635,"y":426},{"type":"mouseup","time":14251,"x":635,"y":426},{"time":14252,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568041229314}] \ No newline at end of file diff --git a/test/runTest/actions/hoverStyle.json b/test/runTest/actions/hoverStyle.json new file mode 100644 index 0000000000..7bfb26ee39 --- /dev/null +++ b/test/runTest/actions/hoverStyle.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":381,"x":326,"y":308},{"type":"mousemove","time":582,"x":363,"y":304},{"type":"mousemove","time":783,"x":363,"y":303},{"type":"mousedown","time":897,"x":363,"y":303},{"type":"mouseup","time":987,"x":363,"y":303},{"time":988,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1098,"x":372,"y":303},{"type":"mousemove","time":1300,"x":483,"y":306},{"type":"mousemove","time":1501,"x":512,"y":309},{"type":"mousemove","time":1704,"x":521,"y":308},{"type":"mousemove","time":1904,"x":530,"y":309},{"type":"mousedown","time":2152,"x":530,"y":309},{"type":"mousemove","time":2175,"x":530,"y":309},{"type":"mouseup","time":2287,"x":530,"y":309},{"time":2288,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2499,"x":521,"y":311},{"type":"mousemove","time":2700,"x":418,"y":374},{"type":"mousemove","time":2902,"x":427,"y":373},{"type":"mousemove","time":3102,"x":429,"y":373},{"type":"mousemove","time":3303,"x":429,"y":373},{"type":"mousedown","time":3350,"x":429,"y":373},{"type":"mouseup","time":3433,"x":429,"y":373},{"time":3434,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3607,"x":429,"y":373},{"type":"mousemove","time":3808,"x":438,"y":407},{"type":"mousemove","time":4041,"x":440,"y":442},{"type":"mousedown","time":4260,"x":440,"y":442},{"type":"mouseup","time":4357,"x":440,"y":442},{"time":4358,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4570,"x":440,"y":442},{"type":"mousemove","time":4770,"x":302,"y":433},{"type":"mousemove","time":4973,"x":294,"y":431},{"type":"mousemove","time":5173,"x":292,"y":431},{"type":"mousedown","time":5328,"x":290,"y":430},{"type":"mousemove","time":5388,"x":290,"y":430},{"type":"mouseup","time":5396,"x":290,"y":430},{"time":5397,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5561,"x":290,"y":430},{"type":"mousemove","time":5762,"x":274,"y":367},{"type":"mousemove","time":5989,"x":273,"y":354},{"type":"mousedown","time":6165,"x":273,"y":354},{"type":"mouseup","time":6261,"x":273,"y":354},{"time":6262,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6391,"x":273,"y":354},{"type":"mousemove","time":6596,"x":577,"y":379},{"type":"mousemove","time":6801,"x":598,"y":383},{"type":"mousemove","time":7001,"x":627,"y":384},{"type":"mousedown","time":7307,"x":627,"y":384},{"type":"mouseup","time":7428,"x":627,"y":384},{"time":7429,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7620,"x":626,"y":387},{"type":"mousemove","time":7823,"x":608,"y":460},{"type":"mousemove","time":8232,"x":608,"y":460},{"type":"mousedown","time":8303,"x":608,"y":460},{"type":"mouseup","time":8404,"x":608,"y":460},{"time":8405,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":8499,"x":608,"y":460},{"type":"mousemove","time":8699,"x":605,"y":460},{"type":"mousemove","time":8931,"x":604,"y":460},{"type":"mousemove","time":9091,"x":604,"y":459},{"type":"mousemove","time":9292,"x":616,"y":446},{"type":"mousemove","time":9505,"x":704,"y":357},{"type":"mousemove","time":9705,"x":742,"y":314},{"type":"mousemove","time":9905,"x":741,"y":304},{"type":"mousemove","time":10105,"x":739,"y":298},{"type":"mousemove","time":10305,"x":739,"y":291},{"type":"screenshot","time":11606},{"type":"mousemove","time":11734,"x":739,"y":290},{"type":"mousemove","time":11938,"x":736,"y":278},{"type":"mousemove","time":12138,"x":734,"y":270},{"type":"mousemove","time":12354,"x":734,"y":268},{"type":"mousemove","time":12588,"x":734,"y":268},{"type":"screenshot","time":13076},{"type":"mousemove","time":13186,"x":734,"y":267},{"type":"mousemove","time":13386,"x":730,"y":251},{"type":"mousemove","time":13589,"x":730,"y":247},{"type":"mousemove","time":13789,"x":730,"y":244},{"type":"screenshot","time":14837},{"type":"mousemove","time":15268,"x":728,"y":243},{"type":"mousemove","time":15468,"x":309,"y":194},{"type":"mousemove","time":15670,"x":309,"y":197},{"type":"mousemove","time":15870,"x":309,"y":198},{"type":"mousedown","time":16729,"x":309,"y":198},{"type":"mouseup","time":16815,"x":309,"y":198},{"time":16816,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":18114,"x":315,"y":198},{"type":"mousemove","time":18318,"x":418,"y":203},{"type":"mousedown","time":18656,"x":418,"y":203},{"type":"mouseup","time":18754,"x":418,"y":203},{"time":18755,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568041537586},{"name":"Action 2","ops":[{"type":"mousedown","time":458,"x":101,"y":303},{"type":"mouseup","time":543,"x":101,"y":303},{"time":544,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1232,"x":101,"y":304},{"type":"mousemove","time":1436,"x":90,"y":374},{"type":"mousedown","time":1736,"x":90,"y":374},{"type":"mouseup","time":1818,"x":90,"y":374},{"time":1819,"delay":400,"type":"screenshot-auto"}],"scrollY":725,"scrollX":0,"timestamp":1568041584399},{"name":"Action 3","ops":[{"type":"mousedown","time":937,"x":411,"y":368},{"type":"mouseup","time":1037,"x":411,"y":368},{"time":1038,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1402,"x":411,"y":369},{"type":"mousemove","time":1603,"x":404,"y":397},{"type":"mousemove","time":1805,"x":406,"y":407},{"type":"mousemove","time":2006,"x":406,"y":407},{"type":"mousemove","time":2110,"x":406,"y":408},{"type":"mousemove","time":2310,"x":407,"y":411},{"type":"mousemove","time":2620,"x":407,"y":411},{"type":"mousemove","time":2821,"x":408,"y":412},{"type":"mousedown","time":3025,"x":408,"y":412},{"type":"mouseup","time":3128,"x":408,"y":412},{"time":3129,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3229,"x":408,"y":414},{"type":"mousemove","time":3431,"x":406,"y":427},{"type":"mousemove","time":3647,"x":406,"y":434},{"type":"mousemove","time":3848,"x":406,"y":435},{"type":"mousedown","time":3965,"x":406,"y":435},{"type":"mouseup","time":4096,"x":406,"y":435},{"time":4097,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4765,"x":405,"y":434},{"type":"mousemove","time":4965,"x":289,"y":403},{"type":"mousemove","time":5167,"x":272,"y":396},{"type":"mousemove","time":5367,"x":267,"y":395},{"type":"mousemove","time":5656,"x":266,"y":395},{"type":"mousedown","time":6033,"x":266,"y":395},{"type":"mouseup","time":6134,"x":266,"y":395},{"time":6135,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6417,"x":270,"y":393},{"type":"mousemove","time":6619,"x":323,"y":325},{"type":"mousemove","time":6819,"x":331,"y":317},{"type":"mousemove","time":7035,"x":336,"y":313},{"type":"mousedown","time":7469,"x":336,"y":313},{"type":"mouseup","time":7556,"x":336,"y":313},{"time":7557,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7745,"x":337,"y":313},{"type":"mousemove","time":7945,"x":528,"y":401},{"type":"mousemove","time":8154,"x":544,"y":425},{"type":"mousemove","time":8358,"x":536,"y":434},{"type":"mousemove","time":8494,"x":536,"y":434},{"type":"mousedown","time":8702,"x":536,"y":434},{"type":"mouseup","time":8770,"x":536,"y":434},{"time":8771,"delay":400,"type":"screenshot-auto"}],"scrollY":971,"scrollX":0,"timestamp":1568041592439},{"name":"Action 4","ops":[{"type":"mousedown","time":474,"x":215,"y":299},{"type":"mouseup","time":616,"x":215,"y":299},{"time":617,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":916,"x":217,"y":299},{"type":"mousemove","time":1116,"x":517,"y":316},{"type":"mousemove","time":1317,"x":608,"y":319},{"type":"mousemove","time":1517,"x":655,"y":306},{"type":"mousemove","time":1718,"x":655,"y":305},{"type":"mousedown","time":1818,"x":655,"y":305},{"type":"mouseup","time":1934,"x":655,"y":305},{"time":1935,"delay":400,"type":"screenshot-auto"}],"scrollY":1389,"scrollX":0,"timestamp":1568041619141},{"name":"Action 5","ops":[{"type":"mousedown","time":600,"x":211,"y":297},{"type":"mouseup","time":707,"x":211,"y":297},{"time":708,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1000,"x":213,"y":297},{"type":"mousemove","time":1200,"x":288,"y":294},{"type":"mousemove","time":1401,"x":299,"y":293},{"type":"mousedown","time":1633,"x":299,"y":293},{"type":"mouseup","time":1717,"x":299,"y":293},{"time":1718,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2002,"x":302,"y":293},{"type":"mousemove","time":2203,"x":576,"y":296},{"type":"mousemove","time":2403,"x":660,"y":294},{"type":"mousemove","time":2603,"x":660,"y":294},{"type":"mousedown","time":2801,"x":660,"y":294},{"type":"mouseup","time":2901,"x":660,"y":294},{"time":2902,"delay":400,"type":"screenshot-auto"}],"scrollY":1713,"scrollX":0,"timestamp":1568041629492},{"name":"Action 6","ops":[{"type":"mousemove","time":292,"x":243,"y":361},{"type":"mousemove","time":492,"x":205,"y":329},{"type":"mousemove","time":704,"x":199,"y":313},{"type":"mousedown","time":856,"x":199,"y":313},{"type":"mouseup","time":954,"x":199,"y":313},{"time":955,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1445,"x":199,"y":313},{"type":"mousemove","time":1647,"x":599,"y":313},{"type":"mousemove","time":1847,"x":686,"y":312},{"type":"mousemove","time":2063,"x":668,"y":311},{"type":"mousemove","time":2264,"x":664,"y":311},{"type":"mousedown","time":2478,"x":664,"y":311},{"type":"mouseup","time":2552,"x":664,"y":311},{"time":2553,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3197,"x":660,"y":310},{"type":"mousemove","time":3397,"x":319,"y":202},{"type":"mousemove","time":3597,"x":316,"y":195},{"type":"mousedown","time":3715,"x":316,"y":195},{"type":"mouseup","time":3798,"x":316,"y":195},{"time":3799,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3818,"x":316,"y":195},{"type":"mousemove","time":4313,"x":316,"y":195},{"type":"mousemove","time":4514,"x":412,"y":193},{"type":"mousedown","time":4684,"x":413,"y":193},{"type":"mousemove","time":4714,"x":413,"y":193},{"type":"mouseup","time":4772,"x":413,"y":193},{"time":4773,"delay":400,"type":"screenshot-auto"}],"scrollY":2047,"scrollX":0,"timestamp":1568041645495},{"name":"Action 7","ops":[{"type":"mousedown","time":682,"x":332,"y":257},{"type":"mouseup","time":756,"x":332,"y":257},{"time":757,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1153,"x":333,"y":257},{"type":"mousemove","time":1353,"x":435,"y":255},{"type":"mousedown","time":1932,"x":435,"y":255},{"type":"mouseup","time":2014,"x":435,"y":255},{"time":2015,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2540,"x":435,"y":255},{"type":"mousemove","time":2747,"x":226,"y":273},{"type":"mousemove","time":2947,"x":120,"y":282},{"type":"mousemove","time":3148,"x":113,"y":292},{"type":"mousemove","time":3366,"x":113,"y":292},{"type":"mousemove","time":3415,"x":113,"y":292},{"type":"mousedown","time":3464,"x":113,"y":292},{"type":"mouseup","time":3565,"x":113,"y":292},{"time":3566,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3618,"x":113,"y":292},{"type":"mousemove","time":3872,"x":114,"y":292},{"type":"mousemove","time":4081,"x":218,"y":281},{"type":"mousemove","time":4283,"x":276,"y":284},{"type":"mousemove","time":4548,"x":276,"y":289},{"type":"mousedown","time":4771,"x":276,"y":289},{"type":"mouseup","time":4864,"x":276,"y":289},{"time":4865,"delay":400,"type":"screenshot-auto"}],"scrollY":2298,"scrollX":0,"timestamp":1568041657104},{"name":"Action 8","ops":[{"type":"mousedown","time":612,"x":215,"y":292},{"type":"mouseup","time":661,"x":215,"y":292},{"time":662,"delay":400,"type":"screenshot-auto"}],"scrollY":2723,"scrollX":0,"timestamp":1568041676824},{"name":"Action 9","ops":[{"type":"mousedown","time":432,"x":299,"y":225},{"type":"mouseup","time":546,"x":299,"y":225},{"time":547,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1220,"x":303,"y":225},{"type":"mousemove","time":1421,"x":337,"y":230},{"type":"mousemove","time":1634,"x":400,"y":232},{"type":"mousedown","time":1755,"x":400,"y":232},{"type":"mouseup","time":1865,"x":400,"y":232},{"time":1866,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2020,"x":400,"y":232}],"scrollY":3007,"scrollX":0,"timestamp":1568041692240},{"name":"Action 10","ops":[{"type":"mousemove","time":361,"x":385,"y":451},{"type":"mousemove","time":561,"x":378,"y":459},{"type":"mousemove","time":773,"x":376,"y":462},{"type":"screenshot","time":1406},{"type":"mousemove","time":1572,"x":375,"y":461},{"type":"mousemove","time":1773,"x":292,"y":394},{"type":"mousemove","time":1975,"x":285,"y":389},{"type":"mousemove","time":3346,"x":285,"y":389},{"type":"mousemove","time":3547,"x":289,"y":379},{"type":"mousemove","time":3758,"x":292,"y":366},{"type":"mousemove","time":3961,"x":291,"y":353},{"type":"mousedown","time":4141,"x":291,"y":350},{"type":"mousemove","time":4163,"x":291,"y":350},{"type":"mouseup","time":4215,"x":291,"y":350},{"time":4216,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6616,"x":291,"y":350},{"type":"mousemove","time":6816,"x":308,"y":372},{"type":"mousemove","time":7028,"x":342,"y":411},{"type":"mousemove","time":7229,"x":347,"y":421},{"type":"mousemove","time":7430,"x":349,"y":429},{"type":"mousemove","time":7630,"x":349,"y":430},{"type":"mousedown","time":7980,"x":349,"y":430},{"type":"mouseup","time":8080,"x":349,"y":430},{"time":8081,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":9997,"x":349,"y":430},{"type":"mousemove","time":10204,"x":350,"y":430},{"type":"mousemove","time":10544,"x":350,"y":430},{"type":"mousemove","time":10744,"x":311,"y":392},{"type":"mousemove","time":10957,"x":309,"y":388},{"type":"screenshot","time":11657},{"type":"mousemove","time":12025,"x":311,"y":388},{"type":"mousemove","time":12227,"x":418,"y":413},{"type":"mousemove","time":12427,"x":420,"y":415},{"type":"mousemove","time":13327,"x":420,"y":415},{"type":"mousemove","time":13527,"x":424,"y":411},{"type":"mousemove","time":13990,"x":424,"y":411},{"type":"mousemove","time":14190,"x":441,"y":374},{"type":"mousemove","time":14408,"x":442,"y":373},{"type":"mousemove","time":14666,"x":442,"y":373},{"type":"screenshot","time":14860},{"type":"mousemove","time":16268,"x":442,"y":373},{"type":"mousemove","time":16480,"x":436,"y":353},{"type":"mousemove","time":16680,"x":435,"y":351},{"type":"mousemove","time":17333,"x":435,"y":351},{"type":"mousemove","time":17534,"x":436,"y":349},{"type":"mousedown","time":17544,"x":436,"y":349},{"type":"mouseup","time":17816,"x":436,"y":349},{"time":17817,"delay":400,"type":"screenshot-auto"}],"scrollY":3294,"scrollX":0,"timestamp":1568041864155},{"name":"Action 11","ops":[{"type":"mousedown","time":1328,"x":331,"y":125},{"type":"mouseup","time":1414,"x":331,"y":125},{"time":1415,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1817,"x":331,"y":125},{"type":"mousemove","time":2020,"x":366,"y":159},{"type":"mousemove","time":2222,"x":426,"y":285},{"type":"mousemove","time":2422,"x":427,"y":290},{"type":"mousemove","time":2622,"x":426,"y":280},{"type":"mousemove","time":3078,"x":426,"y":279},{"type":"mousemove","time":3806,"x":421,"y":281},{"type":"mousemove","time":4006,"x":326,"y":309},{"type":"mousemove","time":4206,"x":318,"y":317},{"type":"screenshot","time":4807},{"type":"mousemove","time":5298,"x":318,"y":317},{"type":"mousemove","time":5509,"x":327,"y":304},{"type":"mousemove","time":5709,"x":329,"y":303},{"type":"mousemove","time":5910,"x":332,"y":299},{"type":"mousemove","time":6114,"x":370,"y":225},{"type":"mousemove","time":6315,"x":386,"y":165},{"type":"mousemove","time":6517,"x":395,"y":134},{"type":"mousedown","time":6761,"x":395,"y":134},{"type":"mouseup","time":6844,"x":395,"y":134},{"time":6845,"delay":400,"type":"screenshot-auto"}],"scrollY":3828,"scrollX":0,"timestamp":1568041914358},{"name":"Action 12","ops":[{"type":"mousedown","time":589,"x":312,"y":212},{"type":"mouseup","time":662,"x":312,"y":212},{"time":663,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1341,"x":313,"y":212},{"type":"mousemove","time":1542,"x":416,"y":317},{"type":"mousemove","time":1757,"x":447,"y":346},{"type":"mousemove","time":1957,"x":448,"y":349},{"type":"mousemove","time":2192,"x":448,"y":349},{"type":"mousemove","time":3515,"x":443,"y":338},{"type":"mousemove","time":3716,"x":399,"y":272},{"type":"screenshot","time":4862}],"scrollY":4065,"scrollX":0,"timestamp":1568041956644}] \ No newline at end of file diff --git a/test/runTest/actions/label-position.json b/test/runTest/actions/label-position.json new file mode 100644 index 0000000000..142fcbd93d --- /dev/null +++ b/test/runTest/actions/label-position.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"left","time":2914,"target":"select"},{"time":2915,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2922,"x":659,"y":46},{"type":"mousemove","time":3124,"x":658,"y":47},{"type":"mousemove","time":3331,"x":657,"y":45},{"type":"mousedown","time":3397,"x":657,"y":45},{"type":"mousemove","time":3467,"x":658,"y":45},{"type":"mousemove","time":3668,"x":677,"y":44},{"type":"mouseup","time":3798,"x":677,"y":44},{"time":3799,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3820,"x":678,"y":43},{"type":"mousemove","time":4021,"x":673,"y":19},{"type":"mousemove","time":4235,"x":673,"y":13},{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"right","time":5259,"target":"select"},{"time":5260,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5266,"x":663,"y":44},{"type":"mousemove","time":5467,"x":673,"y":43},{"type":"mousemove","time":5668,"x":675,"y":42},{"type":"mousedown","time":5741,"x":675,"y":42},{"type":"mousemove","time":5869,"x":675,"y":42},{"type":"mousemove","time":6069,"x":666,"y":43},{"type":"mousemove","time":6275,"x":662,"y":45},{"type":"mouseup","time":6401,"x":662,"y":45},{"time":6402,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6425,"x":663,"y":44},{"type":"mousemove","time":6625,"x":668,"y":16},{"type":"mousemove","time":6838,"x":669,"y":15},{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"top","time":7811,"target":"select"},{"time":7812,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7820,"x":662,"y":49},{"type":"mousemove","time":8022,"x":664,"y":51},{"type":"mousemove","time":8223,"x":661,"y":45},{"type":"mousedown","time":8338,"x":661,"y":45},{"type":"mousemove","time":8436,"x":663,"y":45},{"type":"mousemove","time":8640,"x":675,"y":44},{"type":"mouseup","time":8873,"x":675,"y":44},{"time":8874,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":8891,"x":675,"y":44},{"type":"mousemove","time":9091,"x":673,"y":17},{"type":"mousemove","time":9308,"x":673,"y":14},{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"bottom","time":10138,"target":"select"},{"time":10139,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":10158,"x":666,"y":56},{"type":"mousemove","time":10364,"x":672,"y":47},{"type":"mousemove","time":10565,"x":673,"y":45},{"type":"mousedown","time":10664,"x":673,"y":45},{"type":"mousemove","time":10765,"x":671,"y":44},{"type":"mousemove","time":10965,"x":662,"y":43},{"type":"mousemove","time":11197,"x":658,"y":43},{"type":"mouseup","time":11204,"x":658,"y":43},{"time":11205,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":11399,"x":665,"y":16},{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"inside","time":12386,"target":"select"},{"time":12387,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":12484,"x":667,"y":52},{"type":"mousemove","time":12686,"x":657,"y":40},{"type":"mousedown","time":12884,"x":657,"y":40},{"type":"mousemove","time":12903,"x":657,"y":40},{"type":"mousemove","time":12912,"x":658,"y":41},{"type":"mousemove","time":13115,"x":679,"y":43},{"type":"mousemove","time":13317,"x":687,"y":43},{"type":"mousemove","time":13536,"x":689,"y":43},{"type":"mousemove","time":13553,"x":690,"y":43},{"type":"mousemove","time":13754,"x":691,"y":43},{"type":"mouseup","time":13886,"x":692,"y":43},{"time":13887,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":13967,"x":692,"y":43},{"type":"mousemove","time":14019,"x":692,"y":42},{"type":"mousemove","time":14219,"x":682,"y":19},{"type":"mousemove","time":14419,"x":682,"y":18},{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"insideTop","time":15209,"target":"select"},{"time":15210,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":15219,"x":692,"y":42},{"type":"mousemove","time":15419,"x":692,"y":43},{"type":"mousemove","time":15554,"x":692,"y":43},{"type":"mousedown","time":15821,"x":692,"y":43},{"type":"mousemove","time":15912,"x":691,"y":43},{"type":"mousemove","time":16121,"x":668,"y":44},{"type":"mousemove","time":16321,"x":664,"y":44},{"type":"mousemove","time":16825,"x":663,"y":44},{"type":"mousemove","time":17027,"x":656,"y":44},{"type":"mouseup","time":17189,"x":656,"y":44},{"time":17190,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":17241,"x":657,"y":37},{"type":"mousemove","time":17441,"x":665,"y":15},{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"insideLeft","time":18351,"target":"select"},{"time":18352,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":18360,"x":660,"y":45},{"type":"mousemove","time":18560,"x":658,"y":47},{"type":"mousemove","time":18791,"x":657,"y":45},{"type":"mousedown","time":18824,"x":657,"y":45},{"type":"mousemove","time":18993,"x":677,"y":46},{"type":"mousemove","time":19208,"x":696,"y":46},{"type":"mousemove","time":19459,"x":701,"y":46},{"type":"mousemove","time":19659,"x":701,"y":46},{"type":"mouseup","time":19693,"x":701,"y":46},{"time":19694,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":19818,"x":701,"y":46},{"type":"mousemove","time":20025,"x":692,"y":20},{"type":"mousemove","time":20231,"x":692,"y":17},{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"insideRight","time":21436,"target":"select"},{"time":21437,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":21446,"x":686,"y":46},{"type":"mousemove","time":21650,"x":691,"y":45},{"type":"mousemove","time":21850,"x":693,"y":43},{"type":"mousedown","time":21921,"x":693,"y":43},{"type":"mousemove","time":22055,"x":680,"y":43},{"type":"mousemove","time":22261,"x":650,"y":43},{"type":"mousemove","time":22466,"x":640,"y":44},{"type":"mousemove","time":22675,"x":630,"y":45},{"type":"mousemove","time":22842,"x":631,"y":45},{"type":"mousemove","time":23051,"x":644,"y":44},{"type":"mouseup","time":23305,"x":644,"y":44},{"time":23306,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":23337,"x":647,"y":43},{"type":"mousemove","time":23538,"x":668,"y":19},{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"insideBottom","time":24397,"target":"select"},{"time":24398,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":24406,"x":661,"y":51},{"type":"mousemove","time":24607,"x":651,"y":49},{"type":"mousemove","time":24818,"x":645,"y":44},{"type":"mousedown","time":24892,"x":645,"y":44},{"type":"mousemove","time":25028,"x":662,"y":46},{"type":"mousemove","time":25237,"x":705,"y":48},{"type":"mousemove","time":25438,"x":716,"y":49},{"type":"mousemove","time":25639,"x":719,"y":49},{"type":"mousemove","time":25851,"x":724,"y":50},{"type":"mouseup","time":25958,"x":724,"y":50},{"time":25959,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":25996,"x":724,"y":47},{"type":"mousemove","time":26205,"x":714,"y":17},{"type":"mousemove","time":26405,"x":713,"y":14},{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"insideTopLeft","time":27067,"target":"select"},{"time":27068,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":27077,"x":706,"y":40},{"type":"mousemove","time":27278,"x":712,"y":42},{"type":"mousemove","time":27514,"x":714,"y":40},{"type":"mousedown","time":27597,"x":714,"y":40},{"type":"mousemove","time":27718,"x":709,"y":40},{"type":"mousemove","time":27921,"x":658,"y":43},{"type":"mousemove","time":28122,"x":652,"y":43},{"type":"mouseup","time":28425,"x":652,"y":43},{"time":28426,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":28433,"x":653,"y":39},{"type":"mousemove","time":28638,"x":665,"y":15},{"type":"mousemove","time":28842,"x":665,"y":15},{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"insideTopRight","time":29513,"target":"select"},{"time":29514,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":29523,"x":663,"y":44},{"type":"mousemove","time":29725,"x":652,"y":46},{"type":"mousemove","time":29929,"x":649,"y":45},{"type":"mousedown","time":29950,"x":649,"y":45},{"type":"mousemove","time":30010,"x":650,"y":45},{"type":"mousemove","time":30216,"x":708,"y":45},{"type":"mouseup","time":30589,"x":708,"y":45},{"time":30590,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":30651,"x":708,"y":42},{"type":"mousemove","time":30852,"x":704,"y":15},{"type":"mousemove","time":31067,"x":704,"y":15},{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"insideBottomLeft","time":31772,"target":"select"},{"time":31773,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":31793,"x":681,"y":44},{"type":"mousemove","time":32003,"x":683,"y":43},{"type":"mousemove","time":32204,"x":703,"y":43},{"type":"mousedown","time":32405,"x":708,"y":43},{"type":"mousemove","time":32431,"x":708,"y":43},{"type":"mousemove","time":32486,"x":701,"y":43},{"type":"mousemove","time":32694,"x":652,"y":45},{"type":"mousemove","time":32902,"x":650,"y":45},{"type":"mouseup","time":33020,"x":650,"y":45},{"time":33021,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":33054,"x":651,"y":44},{"type":"mousemove","time":33254,"x":667,"y":16},{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"insideBottomRight","time":34193,"target":"select"},{"time":34194,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":34203,"x":660,"y":41},{"type":"mousemove","time":34403,"x":658,"y":42},{"type":"mousemove","time":34620,"x":651,"y":42},{"type":"mousedown","time":34639,"x":651,"y":42},{"type":"mousemove","time":34827,"x":694,"y":43},{"type":"mousemove","time":35027,"x":697,"y":43},{"type":"mousemove","time":35097,"x":697,"y":42},{"type":"mouseup","time":35306,"x":697,"y":42},{"time":35307,"delay":400,"type":"screenshot-auto"},{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"right","time":36050,"target":"select"},{"time":36051,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568042022989}] \ No newline at end of file diff --git a/test/runTest/actions/largeLine-tooltip.json b/test/runTest/actions/largeLine-tooltip.json new file mode 100644 index 0000000000..41e6b60850 --- /dev/null +++ b/test/runTest/actions/largeLine-tooltip.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":797,"x":168,"y":360},{"type":"mouseup","time":886,"x":168,"y":360},{"time":887,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1112,"x":169,"y":360},{"type":"mousemove","time":1319,"x":284,"y":364},{"type":"mousemove","time":1543,"x":400,"y":374},{"type":"mousedown","time":1757,"x":400,"y":374},{"type":"mouseup","time":1872,"x":400,"y":374},{"time":1873,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1891,"x":399,"y":374},{"type":"mousemove","time":2220,"x":400,"y":373},{"type":"mousemove","time":2439,"x":490,"y":319},{"type":"mousemove","time":2658,"x":650,"y":268},{"type":"mousedown","time":2844,"x":651,"y":266},{"type":"mousemove","time":2859,"x":651,"y":266},{"type":"mouseup","time":2988,"x":651,"y":266},{"time":2989,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568042152607}] \ No newline at end of file diff --git a/test/runTest/actions/legend.json b/test/runTest/actions/legend.json new file mode 100644 index 0000000000..4d8ea33874 --- /dev/null +++ b/test/runTest/actions/legend.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":287,"x":398,"y":538},{"type":"mousemove","time":321,"x":398,"y":538},{"type":"mousemove","time":534,"x":320,"y":484},{"type":"mousemove","time":743,"x":196,"y":432},{"type":"mouseup","time":1133,"x":196,"y":432},{"time":1134,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":1574,"x":196,"y":432},{"type":"mousemove","time":1646,"x":200,"y":432},{"type":"mousemove","time":1846,"x":372,"y":443},{"type":"mousemove","time":2048,"x":605,"y":452},{"type":"mousemove","time":2269,"x":664,"y":457},{"type":"mousemove","time":2488,"x":664,"y":458},{"type":"mouseup","time":2629,"x":664,"y":458},{"time":2630,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":3295,"x":664,"y":458},{"type":"mousemove","time":3348,"x":665,"y":458},{"type":"mousemove","time":3548,"x":736,"y":460},{"type":"mousemove","time":3767,"x":765,"y":462},{"type":"mousemove","time":4108,"x":765,"y":462},{"type":"mouseup","time":4122,"x":765,"y":462},{"time":4123,"delay":400,"type":"screenshot-auto"}],"scrollY":2102,"scrollX":0,"timestamp":1568042188728},{"name":"Action 2","ops":[{"type":"mousedown","time":476,"x":411,"y":530},{"type":"mousemove","time":610,"x":410,"y":530},{"type":"mousemove","time":820,"x":254,"y":457},{"type":"mousemove","time":1024,"x":219,"y":446},{"type":"mouseup","time":1259,"x":219,"y":446},{"time":1260,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":1819,"x":219,"y":446},{"type":"mousemove","time":1877,"x":223,"y":446},{"type":"mousemove","time":2120,"x":537,"y":451},{"type":"mousemove","time":2356,"x":652,"y":450},{"type":"mousemove","time":2662,"x":656,"y":450},{"type":"mouseup","time":2848,"x":656,"y":450},{"time":2849,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":3337,"x":656,"y":450},{"type":"mousemove","time":3376,"x":658,"y":450},{"type":"mousemove","time":3591,"x":766,"y":455},{"type":"mousemove","time":3813,"x":784,"y":455}],"scrollY":2488,"scrollX":0,"timestamp":1568042200067},{"name":"Action 3","ops":[{"type":"mousemove","time":118,"x":411,"y":506},{"type":"mousemove","time":351,"x":411,"y":506},{"type":"mousedown","time":469,"x":411,"y":506},{"type":"mousemove","time":568,"x":415,"y":501},{"type":"mousemove","time":773,"x":477,"y":455},{"type":"mousemove","time":1048,"x":544,"y":427},{"type":"mousemove","time":1310,"x":545,"y":427},{"type":"mousemove","time":1494,"x":545,"y":427},{"type":"mouseup","time":1615,"x":545,"y":428},{"time":1616,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1709,"x":530,"y":429},{"type":"mousemove","time":1918,"x":497,"y":414},{"type":"mousemove","time":2119,"x":489,"y":411},{"type":"mousedown","time":2506,"x":489,"y":411},{"type":"mouseup","time":2593,"x":489,"y":411},{"time":2594,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":3705,"x":489,"y":411},{"type":"mouseup","time":3772,"x":489,"y":411},{"time":3773,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3819,"x":489,"y":411},{"type":"mousemove","time":4019,"x":489,"y":411},{"type":"mousedown","time":4628,"x":489,"y":411},{"type":"mouseup","time":4692,"x":489,"y":411},{"time":4693,"delay":400,"type":"screenshot-auto"}],"scrollY":2898,"scrollX":0,"timestamp":1568042216430},{"name":"Action 4","ops":[{"type":"mousedown","time":544,"x":412,"y":484},{"type":"mousemove","time":694,"x":411,"y":483},{"type":"mousemove","time":894,"x":284,"y":431},{"type":"mousemove","time":1094,"x":195,"y":408},{"type":"mousemove","time":1294,"x":164,"y":400},{"type":"mouseup","time":1564,"x":164,"y":400},{"time":1565,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1887,"x":164,"y":400},{"type":"mousemove","time":2087,"x":163,"y":403},{"type":"mousedown","time":2259,"x":163,"y":403},{"type":"mousemove","time":2287,"x":163,"y":402},{"type":"mousemove","time":2490,"x":253,"y":349},{"type":"mousemove","time":2690,"x":330,"y":316},{"type":"mousemove","time":2894,"x":330,"y":316},{"type":"mouseup","time":3013,"x":330,"y":316},{"time":3014,"delay":400,"type":"screenshot-auto"}],"scrollY":3293,"scrollX":0,"timestamp":1568042227380},{"name":"Action 5","ops":[{"type":"mousemove","time":255,"x":313,"y":199},{"type":"mousemove","time":455,"x":312,"y":188},{"type":"mousemove","time":775,"x":312,"y":187},{"type":"mousemove","time":833,"x":312,"y":188},{"type":"screenshot","time":1756},{"type":"mousemove","time":1918,"x":313,"y":188},{"type":"mousemove","time":2119,"x":342,"y":188},{"type":"mousemove","time":2319,"x":345,"y":188},{"type":"mousemove","time":2951,"x":351,"y":187},{"type":"mousemove","time":3154,"x":388,"y":186},{"type":"mousemove","time":3354,"x":394,"y":186},{"type":"mousemove","time":3603,"x":394,"y":185},{"type":"screenshot","time":4054}],"scrollY":4122,"scrollX":0,"timestamp":1568042268271},{"name":"Action 6","ops":[{"type":"mousedown","time":640,"x":304,"y":81},{"type":"mouseup","time":739,"x":304,"y":81},{"time":740,"delay":1500,"type":"screenshot-auto"},{"type":"mousemove","time":842,"x":305,"y":81},{"type":"mousemove","time":1042,"x":450,"y":91},{"type":"mousemove","time":1242,"x":450,"y":91},{"type":"mousemove","time":1458,"x":437,"y":86},{"type":"mousedown","time":1626,"x":437,"y":86},{"type":"mouseup","time":1724,"x":437,"y":86},{"time":1725,"delay":1500,"type":"screenshot-auto"},{"type":"mousemove","time":1765,"x":437,"y":86},{"type":"mousemove","time":2124,"x":438,"y":86},{"type":"mousemove","time":2326,"x":501,"y":84},{"type":"mousemove","time":2529,"x":559,"y":81},{"type":"mousemove","time":2729,"x":572,"y":81},{"type":"mousemove","time":2931,"x":577,"y":81},{"type":"mousedown","time":3109,"x":577,"y":81},{"type":"mouseup","time":3197,"x":577,"y":81},{"time":3198,"delay":1500,"type":"screenshot-auto"},{"type":"mousedown","time":4502,"x":577,"y":81},{"type":"mouseup","time":4612,"x":577,"y":81},{"time":4613,"delay":1500,"type":"screenshot-auto"},{"type":"mousemove","time":5801,"x":573,"y":81},{"type":"mousemove","time":6003,"x":548,"y":80},{"type":"mousedown","time":6158,"x":542,"y":80},{"type":"mousemove","time":6216,"x":542,"y":80},{"type":"mouseup","time":6225,"x":542,"y":80},{"time":6226,"delay":1500,"type":"screenshot-auto"},{"type":"mousemove","time":6487,"x":543,"y":80}],"scrollY":0,"scrollX":0,"timestamp":1568042329369}] \ No newline at end of file diff --git a/test/runTest/actions/line-animation.json b/test/runTest/actions/line-animation.json new file mode 100644 index 0000000000..97ff757b9b --- /dev/null +++ b/test/runTest/actions/line-animation.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":596,"x":28,"y":16},{"type":"mouseup","time":698,"x":28,"y":16},{"time":699,"delay":2000,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568042380534}] \ No newline at end of file diff --git a/test/runTest/actions/map-contour.json b/test/runTest/actions/map-contour.json new file mode 100644 index 0000000000..6885e9e51b --- /dev/null +++ b/test/runTest/actions/map-contour.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousewheel","time":317,"x":437,"y":327,"deltaY":4.000244140625},{"type":"mousewheel","time":368,"x":437,"y":327,"deltaY":28.841552734375},{"type":"mousewheel","time":418,"x":437,"y":327,"deltaY":95.91796875},{"type":"mousewheel","time":501,"x":437,"y":327,"deltaY":112.4969482421875},{"type":"mousedown","time":1142,"x":437,"y":327},{"type":"mouseup","time":1257,"x":437,"y":327},{"time":1258,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1985,"x":440,"y":326},{"type":"mousedown","time":2192,"x":487,"y":307},{"type":"mousemove","time":2198,"x":487,"y":307},{"type":"mousemove","time":2403,"x":388,"y":373},{"type":"mousemove","time":2615,"x":298,"y":421},{"type":"mousemove","time":2825,"x":296,"y":423},{"type":"mouseup","time":2844,"x":296,"y":423},{"time":2845,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":3292,"x":296,"y":423},{"type":"mouseup","time":3398,"x":296,"y":423},{"time":3399,"delay":400,"type":"screenshot-auto"},{"type":"mousewheel","time":4137,"x":296,"y":423,"deltaY":-4.000244140625},{"type":"mousewheel","time":4170,"x":296,"y":423,"deltaY":-40.45654296875},{"type":"mousewheel","time":4204,"x":296,"y":423,"deltaY":-154.06494140625},{"type":"mousewheel","time":4237,"x":296,"y":423,"deltaY":-215.2850341796875},{"type":"mousewheel","time":4271,"x":296,"y":423,"deltaY":-232.7813720703125},{"type":"mousewheel","time":4539,"x":296,"y":423,"deltaY":-4.000244140625},{"type":"mousedown","time":4982,"x":296,"y":423},{"type":"mouseup","time":5080,"x":296,"y":423},{"time":5081,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568969737393},{"name":"Action 2","ops":[{"type":"mousemove","time":244,"x":464,"y":418},{"type":"mousedown","time":438,"x":470,"y":396},{"type":"mousemove","time":451,"x":470,"y":396},{"type":"mousemove","time":660,"x":491,"y":479},{"type":"mousemove","time":862,"x":511,"y":507},{"type":"mouseup","time":1133,"x":514,"y":515},{"time":1134,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1140,"x":514,"y":515},{"type":"mousemove","time":1228,"x":514,"y":514},{"type":"mousemove","time":1428,"x":513,"y":513},{"type":"mousewheel","time":1495,"x":511,"y":510,"deltaY":4.000244140625},{"type":"mousewheel","time":1529,"x":511,"y":510,"deltaY":34.4720458984375},{"type":"mousewheel","time":1561,"x":511,"y":510,"deltaY":146.4215087890625},{"type":"mousewheel","time":1583,"x":511,"y":510,"deltaY":215.0506591796875},{"type":"mousewheel","time":1606,"x":511,"y":510,"deltaY":248.638916015625},{"type":"mousewheel","time":1628,"x":511,"y":510,"deltaY":271.109619140625},{"type":"mousemove","time":1656,"x":511,"y":510},{"type":"mousemove","time":2079,"x":511,"y":510},{"type":"mousedown","time":2245,"x":512,"y":509},{"type":"mousemove","time":2279,"x":512,"y":509},{"type":"mouseup","time":2386,"x":512,"y":509},{"time":2387,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568969748342}] \ No newline at end of file diff --git a/test/runTest/actions/map-default.json b/test/runTest/actions/map-default.json new file mode 100644 index 0000000000..e5b06827c3 --- /dev/null +++ b/test/runTest/actions/map-default.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousewheel","time":432,"x":438,"y":261,"deltaY":4.000244140625},{"type":"mousewheel","time":466,"x":438,"y":261,"deltaY":34.46044921875},{"type":"mousewheel","time":499,"x":438,"y":261,"deltaY":131.441650390625},{"type":"mousewheel","time":550,"x":438,"y":261,"deltaY":181.064453125},{"type":"mousewheel","time":584,"x":438,"y":261,"deltaY":220.333251953125},{"type":"mousemove","time":916,"x":440,"y":261},{"type":"mousedown","time":1121,"x":473,"y":249},{"type":"mousemove","time":1126,"x":473,"y":249},{"type":"mousemove","time":1334,"x":355,"y":406},{"type":"mousemove","time":1542,"x":306,"y":495},{"type":"mouseup","time":1622,"x":305,"y":497},{"time":1623,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1751,"x":331,"y":409},{"type":"mousemove","time":1951,"x":341,"y":356},{"type":"mousemove","time":2151,"x":367,"y":34},{"type":"mousemove","time":2351,"x":371,"y":28},{"type":"mousedown","time":2507,"x":371,"y":28},{"type":"mousemove","time":2557,"x":371,"y":28},{"type":"mouseup","time":2597,"x":371,"y":28},{"time":2598,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3168,"x":374,"y":28},{"type":"mousemove","time":3369,"x":429,"y":30},{"type":"mousedown","time":3507,"x":429,"y":30},{"type":"mouseup","time":3606,"x":429,"y":30},{"time":3607,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3690,"x":429,"y":30},{"type":"mousemove","time":4336,"x":424,"y":36},{"type":"mousemove","time":4537,"x":393,"y":138},{"type":"mousedown","time":4660,"x":407,"y":179},{"type":"mousemove","time":4737,"x":407,"y":207},{"type":"mousemove","time":4944,"x":415,"y":270},{"type":"mouseup","time":4981,"x":419,"y":240},{"time":4982,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5144,"x":419,"y":74},{"type":"mousemove","time":5355,"x":391,"y":47},{"type":"mousemove","time":5561,"x":371,"y":32},{"type":"mousemove","time":5855,"x":371,"y":31},{"type":"mousedown","time":5931,"x":371,"y":31},{"type":"mouseup","time":6033,"x":371,"y":31},{"time":6034,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6472,"x":371,"y":35},{"type":"mousemove","time":6673,"x":385,"y":314},{"type":"mousemove","time":6874,"x":364,"y":395},{"type":"mousedown","time":7069,"x":353,"y":421},{"type":"mousemove","time":7082,"x":353,"y":421},{"type":"mousemove","time":7307,"x":406,"y":290},{"type":"mousemove","time":7513,"x":533,"y":96},{"type":"mouseup","time":7714,"x":535,"y":90},{"time":7715,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7719,"x":535,"y":90},{"type":"mousemove","time":7790,"x":535,"y":91},{"type":"mousemove","time":7991,"x":508,"y":159},{"type":"mousewheel","time":8108,"x":499,"y":168,"deltaY":-4.000244140625},{"type":"mousewheel","time":8133,"x":498,"y":168,"deltaY":-37.16796875},{"type":"mousewheel","time":8161,"x":498,"y":168,"deltaY":-146.4581298828125},{"type":"mousewheel","time":8184,"x":498,"y":168,"deltaY":-208.1878662109375},{"type":"mousemove","time":8216,"x":498,"y":168},{"type":"mousewheel","time":8274,"x":498,"y":168,"deltaY":-211.2359619140625},{"type":"mousemove","time":8641,"x":499,"y":170},{"type":"mousemove","time":8848,"x":498,"y":181},{"type":"mousedown","time":8900,"x":498,"y":182},{"type":"mousemove","time":9099,"x":486,"y":240},{"type":"mousemove","time":9311,"x":478,"y":312},{"type":"mouseup","time":9505,"x":477,"y":328},{"time":9506,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":9519,"x":477,"y":328}],"scrollY":0,"scrollX":0,"timestamp":1568969778612}] \ No newline at end of file diff --git a/test/runTest/actions/map-labels.json b/test/runTest/actions/map-labels.json new file mode 100644 index 0000000000..561fa80932 --- /dev/null +++ b/test/runTest/actions/map-labels.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousewheel","time":368,"x":485,"y":304,"deltaY":4.000244140625},{"type":"mousewheel","time":408,"x":485,"y":304,"deltaY":31.6033935546875},{"type":"mousewheel","time":437,"x":485,"y":304,"deltaY":124.095458984375},{"type":"mousewheel","time":462,"x":485,"y":304,"deltaY":181.0418701171875},{"type":"mousedown","time":991,"x":485,"y":304},{"type":"mouseup","time":1134,"x":485,"y":304},{"time":1135,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1335,"x":483,"y":305},{"type":"mousemove","time":1536,"x":436,"y":313},{"type":"mousemove","time":1741,"x":300,"y":337},{"type":"mousedown","time":2012,"x":300,"y":337},{"type":"mousemove","time":2153,"x":309,"y":337},{"type":"mousemove","time":2367,"x":510,"y":334},{"type":"mousemove","time":2577,"x":595,"y":334},{"type":"mouseup","time":2926,"x":595,"y":334},{"time":2927,"delay":400,"type":"screenshot-auto"},{"type":"mousewheel","time":3286,"x":595,"y":334,"deltaY":4.000244140625},{"type":"mousewheel","time":3320,"x":595,"y":334,"deltaY":31.6998291015625},{"type":"mousewheel","time":3341,"x":595,"y":334,"deltaY":139.10400390625},{"type":"mousewheel","time":3360,"x":595,"y":334,"deltaY":208.3685302734375},{"type":"mousewheel","time":3404,"x":595,"y":334,"deltaY":232.7313232421875},{"type":"mousewheel","time":3454,"x":595,"y":334,"deltaY":247.6025390625},{"type":"mousemove","time":4004,"x":595,"y":334},{"type":"mousedown","time":4193,"x":599,"y":334},{"type":"mousemove","time":4210,"x":599,"y":334},{"type":"mousemove","time":4338,"x":603,"y":332},{"type":"mousemove","time":4538,"x":777,"y":240},{"type":"mousemove","time":4744,"x":785,"y":234},{"type":"mouseup","time":4884,"x":785,"y":234},{"time":4885,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5055,"x":782,"y":235},{"type":"mousemove","time":5255,"x":711,"y":258},{"type":"mousemove","time":5466,"x":658,"y":267},{"type":"mousemove","time":5689,"x":655,"y":267},{"type":"mousemove","time":5895,"x":502,"y":324},{"type":"mousewheel","time":6057,"x":439,"y":337,"deltaY":-4.000244140625},{"type":"mousewheel","time":6089,"x":439,"y":337,"deltaY":-40.3826904296875},{"type":"mousemove","time":6109,"x":439,"y":337},{"type":"mousewheel","time":6125,"x":439,"y":337,"deltaY":-388.7432861328125},{"type":"mousewheel","time":6157,"x":439,"y":337,"deltaY":-255.3125},{"type":"mousewheel","time":6190,"x":439,"y":337,"deltaY":-271.1016845703125},{"type":"mousewheel","time":6291,"x":439,"y":337,"deltaY":-255.809326171875},{"type":"mousewheel","time":6374,"x":439,"y":337,"deltaY":-256.5814208984375},{"type":"mousemove","time":6398,"x":439,"y":337},{"type":"mousemove","time":6598,"x":438,"y":333},{"type":"mousewheel","time":6741,"x":438,"y":333,"deltaY":-4.000244140625},{"type":"mousewheel","time":6791,"x":438,"y":333,"deltaY":-28.80859375},{"type":"mousedown","time":7188,"x":438,"y":333},{"type":"mousemove","time":7324,"x":435,"y":338},{"type":"mousemove","time":7545,"x":344,"y":380},{"type":"mouseup","time":7706,"x":344,"y":380},{"time":7707,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568969800663}] \ No newline at end of file diff --git a/test/runTest/actions/map-parallel.json b/test/runTest/actions/map-parallel.json new file mode 100644 index 0000000000..892fe47145 --- /dev/null +++ b/test/runTest/actions/map-parallel.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":13,"x":509,"y":79},{"type":"mousemove","time":320,"x":514,"y":77},{"type":"mousemove","time":520,"x":628,"y":51},{"type":"mousemove","time":721,"x":675,"y":17},{"type":"mousemove","time":922,"x":692,"y":12},{"type":"mousedown","time":1121,"x":693,"y":12},{"type":"mousemove","time":1171,"x":693,"y":12},{"type":"mouseup","time":1210,"x":693,"y":12},{"time":1211,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1372,"x":602,"y":44},{"type":"mousemove","time":1572,"x":410,"y":86},{"type":"mousemove","time":1808,"x":362,"y":91},{"type":"mousedown","time":1888,"x":362,"y":91},{"type":"mousemove","time":2030,"x":382,"y":103},{"type":"mousemove","time":2286,"x":428,"y":133},{"type":"mousemove","time":2558,"x":430,"y":134},{"type":"mouseup","time":2807,"x":430,"y":134},{"time":2808,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2815,"x":427,"y":130},{"type":"mousemove","time":3015,"x":406,"y":110},{"type":"mousedown","time":3131,"x":404,"y":105},{"type":"mousemove","time":3245,"x":392,"y":107},{"type":"mousemove","time":3466,"x":288,"y":113},{"type":"mousemove","time":3679,"x":249,"y":119},{"type":"mousemove","time":3887,"x":236,"y":125},{"type":"mouseup","time":4193,"x":236,"y":125},{"time":4194,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4358,"x":243,"y":125},{"type":"mousemove","time":4561,"x":278,"y":124},{"type":"mousedown","time":4718,"x":279,"y":124},{"type":"mousemove","time":4768,"x":279,"y":124},{"type":"mouseup","time":4817,"x":279,"y":124},{"time":4818,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4925,"x":279,"y":124},{"type":"mousemove","time":5160,"x":360,"y":110},{"type":"mousemove","time":5360,"x":655,"y":42},{"type":"mousemove","time":5567,"x":706,"y":25},{"type":"mousemove","time":5777,"x":730,"y":16},{"type":"mousedown","time":5951,"x":730,"y":16},{"type":"mouseup","time":6037,"x":730,"y":16},{"time":6038,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6082,"x":729,"y":16},{"type":"mousemove","time":6289,"x":406,"y":64},{"type":"mousemove","time":6497,"x":384,"y":69},{"type":"mousemove","time":6722,"x":391,"y":77},{"type":"mousedown","time":6823,"x":391,"y":75},{"type":"mousemove","time":6983,"x":346,"y":90},{"type":"mousemove","time":7207,"x":358,"y":126},{"type":"mousemove","time":7426,"x":412,"y":137},{"type":"mousemove","time":7642,"x":450,"y":110},{"type":"mousemove","time":7847,"x":444,"y":89},{"type":"mousemove","time":8052,"x":428,"y":84},{"type":"mouseup","time":8201,"x":428,"y":84},{"time":8202,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":8294,"x":416,"y":108},{"type":"mousedown","time":8524,"x":416,"y":109},{"type":"mousemove","time":8569,"x":416,"y":109},{"type":"mousemove","time":8579,"x":414,"y":109},{"type":"mousemove","time":8790,"x":336,"y":115},{"type":"mousemove","time":9016,"x":254,"y":119},{"type":"mousemove","time":9220,"x":249,"y":119},{"type":"mousemove","time":9470,"x":246,"y":120},{"type":"mouseup","time":9586,"x":246,"y":120},{"time":9587,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":9641,"x":252,"y":122},{"type":"mousemove","time":9845,"x":295,"y":131},{"type":"mousedown","time":9988,"x":295,"y":131},{"type":"mouseup","time":10081,"x":295,"y":131},{"time":10082,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":10373,"x":299,"y":147},{"type":"mousemove","time":10582,"x":336,"y":318},{"type":"mousemove","time":10789,"x":344,"y":358},{"type":"mousemove","time":10989,"x":355,"y":409},{"type":"mousemove","time":11189,"x":356,"y":416},{"type":"mousemove","time":11390,"x":357,"y":420},{"type":"mousemove","time":11597,"x":364,"y":417},{"type":"mousemove","time":11774,"x":365,"y":416},{"type":"mousedown","time":11931,"x":366,"y":416},{"type":"mousemove","time":11983,"x":366,"y":416},{"type":"mousemove","time":12240,"x":367,"y":447},{"type":"mousemove","time":12471,"x":367,"y":471},{"type":"mousemove","time":12718,"x":367,"y":472},{"type":"mouseup","time":12879,"x":367,"y":472},{"time":12880,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":12941,"x":367,"y":469},{"type":"mousemove","time":13142,"x":370,"y":452},{"type":"mousedown","time":13200,"x":371,"y":451},{"type":"mousemove","time":13408,"x":382,"y":426},{"type":"mousemove","time":13617,"x":385,"y":391},{"type":"mousemove","time":13830,"x":385,"y":375},{"type":"mousemove","time":14085,"x":386,"y":363},{"type":"mousemove","time":14309,"x":386,"y":363},{"type":"mouseup","time":14456,"x":386,"y":363},{"time":14457,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":14586,"x":386,"y":365},{"type":"mousemove","time":14786,"x":369,"y":363},{"type":"mousedown","time":14952,"x":369,"y":363},{"type":"mousemove","time":14993,"x":369,"y":363},{"type":"mousemove","time":15206,"x":396,"y":438},{"type":"mousemove","time":15411,"x":393,"y":469},{"type":"mousemove","time":15666,"x":392,"y":474},{"type":"mouseup","time":15974,"x":392,"y":474},{"time":15975,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":16161,"x":393,"y":472},{"type":"mousemove","time":16368,"x":473,"y":399},{"type":"mousemove","time":16578,"x":414,"y":397},{"type":"mousemove","time":16787,"x":402,"y":397},{"type":"mousemove","time":16989,"x":437,"y":397},{"type":"mousedown","time":17030,"x":437,"y":397},{"type":"mouseup","time":17178,"x":437,"y":397},{"time":17179,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":17196,"x":437,"y":397},{"type":"mousemove","time":17369,"x":434,"y":397},{"type":"mousemove","time":17576,"x":403,"y":397},{"type":"mousemove","time":17810,"x":389,"y":396},{"type":"mousemove","time":18043,"x":384,"y":396},{"type":"mousemove","time":18220,"x":383,"y":396},{"type":"mousemove","time":18427,"x":381,"y":397},{"type":"mousedown","time":18496,"x":381,"y":397},{"type":"mouseup","time":18597,"x":381,"y":397},{"time":18598,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":18618,"x":381,"y":397},{"type":"mouseup","time":18696,"x":381,"y":397},{"time":18697,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":18808,"x":381,"y":397},{"type":"mousemove","time":18840,"x":377,"y":397},{"type":"mousedown","time":19091,"x":377,"y":397},{"type":"mouseup","time":19114,"x":377,"y":397},{"time":19115,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568036982159}] \ No newline at end of file diff --git a/test/runTest/actions/map-province.json b/test/runTest/actions/map-province.json new file mode 100644 index 0000000000..d022600416 --- /dev/null +++ b/test/runTest/actions/map-province.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":329,"x":766,"y":244},{"type":"mouseup","time":413,"x":766,"y":244},{"time":414,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":871,"x":766,"y":244},{"type":"mouseup","time":953,"x":766,"y":244},{"time":954,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":1516,"x":766,"y":244},{"type":"mouseup","time":1612,"x":766,"y":244},{"time":1613,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":2124,"x":766,"y":244},{"type":"mouseup","time":2263,"x":766,"y":244},{"time":2264,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":2714,"x":766,"y":244},{"type":"mouseup","time":2799,"x":766,"y":244},{"time":2800,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3075,"x":762,"y":245},{"type":"mousemove","time":3280,"x":141,"y":233},{"type":"mousemove","time":3492,"x":73,"y":248},{"type":"mousemove","time":3698,"x":46,"y":248},{"type":"mousedown","time":3831,"x":45,"y":248},{"type":"mousemove","time":3964,"x":45,"y":248},{"type":"mouseup","time":3972,"x":45,"y":248},{"time":3973,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4177,"x":37,"y":245},{"type":"mousemove","time":4384,"x":34,"y":244},{"type":"mousedown","time":4457,"x":34,"y":244},{"type":"mouseup","time":4525,"x":34,"y":244},{"time":4526,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4610,"x":33,"y":244},{"type":"mousemove","time":4817,"x":32,"y":244},{"type":"mousemove","time":4961,"x":32,"y":244},{"type":"mousedown","time":4989,"x":32,"y":244},{"type":"mouseup","time":5086,"x":32,"y":244},{"time":5087,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":5518,"x":32,"y":244},{"type":"mouseup","time":5611,"x":32,"y":244},{"time":5612,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":6103,"x":32,"y":244},{"type":"mouseup","time":6203,"x":32,"y":244},{"time":6204,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":6504,"x":32,"y":244},{"type":"mouseup","time":6608,"x":32,"y":244},{"time":6609,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":7022,"x":32,"y":244},{"type":"mouseup","time":7120,"x":32,"y":244},{"time":7121,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":7494,"x":32,"y":244},{"type":"mouseup","time":7588,"x":32,"y":244},{"time":7589,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7981,"x":32,"y":244},{"type":"mousemove","time":8187,"x":31,"y":244}],"scrollY":0,"scrollX":0,"timestamp":1568042449087}] \ No newline at end of file diff --git a/test/runTest/actions/map.json b/test/runTest/actions/map.json new file mode 100644 index 0000000000..9026afaed4 --- /dev/null +++ b/test/runTest/actions/map.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":159,"x":215,"y":416},{"type":"mousemove","time":366,"x":236,"y":377},{"type":"screenshot","time":1033}],"scrollY":0,"scrollX":0,"timestamp":1568093856396},{"name":"Action 2","ops":[{"type":"mousedown","time":303,"x":50,"y":56},{"type":"mouseup","time":400,"x":50,"y":56},{"time":401,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1022,"x":50,"y":57},{"type":"mousemove","time":1223,"x":52,"y":77},{"type":"mousedown","time":1280,"x":52,"y":77},{"type":"mouseup","time":1381,"x":52,"y":77},{"time":1382,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":2147,"x":52,"y":77},{"type":"mouseup","time":2230,"x":52,"y":77},{"time":2231,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2347,"x":52,"y":77},{"type":"mousemove","time":2559,"x":56,"y":58},{"type":"mousemove","time":2772,"x":56,"y":52},{"type":"mousedown","time":3057,"x":56,"y":52},{"type":"mouseup","time":3130,"x":56,"y":52},{"time":3131,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568042466696},{"name":"Action 3","ops":[{"type":"mousemove","time":180,"x":556,"y":444},{"type":"mousemove","time":380,"x":664,"y":448},{"type":"mousemove","time":699,"x":664,"y":446},{"type":"mousemove","time":901,"x":658,"y":383},{"type":"mousedown","time":928,"x":658,"y":383},{"type":"mouseup","time":1033,"x":658,"y":383},{"time":1034,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1148,"x":655,"y":383},{"type":"mousemove","time":1377,"x":568,"y":376},{"type":"mousewheel","time":1415,"x":568,"y":376,"deltaY":-4.000244140625},{"type":"mousewheel","time":1476,"x":568,"y":376,"deltaY":-30.675048828125},{"type":"mousewheel","time":1531,"x":568,"y":376,"deltaY":-104.664306640625},{"type":"mousewheel","time":1591,"x":568,"y":376,"deltaY":-121.54052734375},{"type":"mousewheel","time":2248,"x":568,"y":376,"deltaY":-4.000244140625},{"type":"mousewheel","time":2291,"x":568,"y":376,"deltaY":-36.8389892578125},{"type":"mousewheel","time":2334,"x":568,"y":376,"deltaY":-135.4681396484375},{"type":"mousewheel","time":2929,"x":568,"y":376,"deltaY":4.000244140625},{"type":"mousewheel","time":2973,"x":568,"y":376,"deltaY":40.0079345703125},{"type":"mousewheel","time":3025,"x":568,"y":376,"deltaY":151.536865234375},{"type":"mousewheel","time":3046,"x":568,"y":376,"deltaY":210.93994140625},{"type":"mousewheel","time":3088,"x":568,"y":376,"deltaY":229.385986328125},{"type":"mousewheel","time":3169,"x":568,"y":376,"deltaY":222.47314453125},{"type":"mousewheel","time":3457,"x":568,"y":376,"deltaY":4.000244140625},{"type":"mousewheel","time":3521,"x":568,"y":376,"deltaY":22.108154296875},{"type":"mousewheel","time":3611,"x":568,"y":376,"deltaY":49.1888427734375},{"type":"mousewheel","time":3831,"x":568,"y":376,"deltaY":4.000244140625},{"type":"mousewheel","time":4047,"x":568,"y":376,"deltaY":4.000244140625},{"type":"mousewheel","time":4094,"x":568,"y":376,"deltaY":36.810302734375},{"type":"mousewheel","time":4118,"x":568,"y":376,"deltaY":143.3795166015625},{"type":"mousewheel","time":4170,"x":568,"y":376,"deltaY":189.090576171875},{"type":"mousewheel","time":4569,"x":568,"y":376,"deltaY":4.000244140625},{"type":"mousewheel","time":4603,"x":568,"y":376,"deltaY":33.7579345703125},{"type":"mousewheel","time":4648,"x":568,"y":376,"deltaY":135.52490234375},{"type":"mousemove","time":4855,"x":567,"y":376},{"type":"mousemove","time":5064,"x":470,"y":357},{"type":"mousedown","time":5268,"x":446,"y":335},{"type":"mousemove","time":5297,"x":446,"y":335},{"type":"mousemove","time":5503,"x":612,"y":362},{"type":"mousemove","time":5702,"x":705,"y":387},{"type":"mouseup","time":5860,"x":706,"y":387},{"time":5861,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5926,"x":683,"y":389},{"type":"mousemove","time":6126,"x":486,"y":384},{"type":"mousemove","time":6349,"x":470,"y":358},{"type":"mousedown","time":6524,"x":469,"y":351},{"type":"mousemove","time":6573,"x":469,"y":351},{"type":"mouseup","time":6635,"x":469,"y":351},{"time":6636,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6938,"x":469,"y":350},{"type":"mousemove","time":7150,"x":401,"y":292},{"type":"mousemove","time":7353,"x":368,"y":261},{"type":"mousemove","time":7561,"x":329,"y":233},{"type":"mousemove","time":7761,"x":325,"y":232},{"type":"mousedown","time":7775,"x":325,"y":232},{"type":"mousemove","time":7979,"x":416,"y":256},{"type":"mousemove","time":8190,"x":587,"y":319},{"type":"mouseup","time":8357,"x":594,"y":322},{"time":8358,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":8406,"x":594,"y":322},{"type":"mousemove","time":8484,"x":593,"y":323},{"type":"mousemove","time":8689,"x":553,"y":332},{"type":"mousemove","time":8893,"x":459,"y":455},{"type":"mousemove","time":9097,"x":591,"y":371},{"type":"mousemove","time":9341,"x":620,"y":293}],"scrollY":0,"scrollX":0,"timestamp":1568968723049}] \ No newline at end of file diff --git a/test/runTest/actions/mapWorld.json b/test/runTest/actions/mapWorld.json new file mode 100644 index 0000000000..8d706d89f3 --- /dev/null +++ b/test/runTest/actions/mapWorld.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":2209,"x":33,"y":429},{"type":"mouseup","time":2319,"x":33,"y":429},{"time":2320,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":2984,"x":33,"y":429},{"type":"mousemove","time":3113,"x":33,"y":430},{"type":"mousemove","time":3315,"x":32,"y":461},{"type":"mousemove","time":3587,"x":33,"y":493},{"type":"mousemove","time":3831,"x":34,"y":512},{"type":"mouseup","time":4158,"x":34,"y":512},{"time":4159,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4698,"x":32,"y":514},{"type":"mousemove","time":4899,"x":10,"y":541},{"type":"mousedown","time":5081,"x":10,"y":541},{"type":"mousemove","time":5182,"x":10,"y":541},{"type":"mousemove","time":5436,"x":16,"y":465},{"type":"mousemove","time":5650,"x":17,"y":411},{"type":"mouseup","time":5870,"x":17,"y":410},{"time":5871,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5924,"x":17,"y":410}],"scrollY":0,"scrollX":0,"timestamp":1568042478050}] \ No newline at end of file diff --git a/test/runTest/actions/markArea.json b/test/runTest/actions/markArea.json new file mode 100644 index 0000000000..d4b556663d --- /dev/null +++ b/test/runTest/actions/markArea.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":1675,"x":365,"y":18},{"type":"mouseup","time":1774,"x":365,"y":18},{"time":1775,"delay":1000,"type":"screenshot-auto"},{"type":"mousedown","time":2690,"x":365,"y":18},{"type":"mouseup","time":2782,"x":365,"y":18},{"time":2783,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":3192,"x":366,"y":18},{"type":"mousemove","time":3393,"x":414,"y":21},{"type":"mousemove","time":3600,"x":414,"y":21},{"type":"mousedown","time":3820,"x":424,"y":20},{"type":"mousemove","time":3849,"x":424,"y":20},{"type":"mouseup","time":3949,"x":424,"y":20},{"time":3950,"delay":1000,"type":"screenshot-auto"},{"type":"mousedown","time":4599,"x":424,"y":20},{"type":"mouseup","time":4683,"x":424,"y":20},{"time":4684,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":5112,"x":424,"y":21},{"type":"mousemove","time":5319,"x":408,"y":101},{"type":"mousemove","time":5530,"x":405,"y":170},{"type":"mousemove","time":5736,"x":405,"y":171},{"type":"mousedown","time":6243,"x":405,"y":171},{"type":"mouseup","time":6340,"x":405,"y":171},{"time":6341,"delay":1000,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568042517606}] \ No newline at end of file diff --git a/test/runTest/actions/media-dataZoom.json b/test/runTest/actions/media-dataZoom.json new file mode 100644 index 0000000000..2881995852 --- /dev/null +++ b/test/runTest/actions/media-dataZoom.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":1255,"x":704,"y":553},{"type":"mousemove","time":1325,"x":704,"y":551},{"type":"mousemove","time":1531,"x":709,"y":450},{"type":"mousemove","time":1741,"x":727,"y":370},{"type":"mousemove","time":1949,"x":727,"y":365},{"type":"mouseup","time":2099,"x":727,"y":365},{"time":2100,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":2583,"x":727,"y":365},{"type":"mousemove","time":2660,"x":724,"y":365},{"type":"mousemove","time":2860,"x":522,"y":384},{"type":"mousemove","time":3067,"x":391,"y":394},{"type":"mouseup","time":3340,"x":391,"y":394},{"time":3341,"delay":400,"type":"screenshot-auto"}],"scrollY":112,"scrollX":0,"timestamp":1568042669858}] \ No newline at end of file diff --git a/test/runTest/actions/media-finance.json b/test/runTest/actions/media-finance.json new file mode 100644 index 0000000000..8e3350dddb --- /dev/null +++ b/test/runTest/actions/media-finance.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":1057,"x":165,"y":506},{"type":"mouseup","time":1139,"x":165,"y":506},{"time":1140,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2261,"x":169,"y":506},{"type":"mousemove","time":2461,"x":194,"y":508},{"type":"mousemove","time":2666,"x":214,"y":508},{"type":"mousemove","time":2901,"x":226,"y":504},{"type":"mousedown","time":3105,"x":226,"y":504},{"type":"mouseup","time":3218,"x":226,"y":504},{"time":3219,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5047,"x":235,"y":504},{"type":"mousemove","time":5247,"x":610,"y":530},{"type":"mousemove","time":5454,"x":701,"y":554},{"type":"mousemove","time":5670,"x":701,"y":555},{"type":"mousedown","time":5948,"x":701,"y":555},{"type":"mousemove","time":6048,"x":699,"y":554},{"type":"mousemove","time":6248,"x":648,"y":527},{"type":"mousemove","time":6455,"x":581,"y":488},{"type":"mousemove","time":6685,"x":517,"y":443},{"type":"mousemove","time":6900,"x":489,"y":417},{"type":"mousemove","time":7120,"x":468,"y":395},{"type":"mousemove","time":7354,"x":452,"y":374},{"type":"mousemove","time":7567,"x":440,"y":359},{"type":"mousemove","time":7788,"x":426,"y":343},{"type":"mousemove","time":7995,"x":421,"y":338},{"type":"mousemove","time":8211,"x":418,"y":333},{"type":"mouseup","time":8529,"x":418,"y":333},{"time":8530,"delay":400,"type":"screenshot-auto"}],"scrollY":112,"scrollX":0,"timestamp":1568042602495},{"name":"Action 2","ops":[{"type":"mousedown","time":642,"x":600,"y":121},{"type":"mouseup","time":726,"x":600,"y":121},{"time":727,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1237,"x":600,"y":121},{"type":"mousemove","time":1442,"x":600,"y":160},{"type":"mousemove","time":1653,"x":592,"y":245},{"type":"mousemove","time":1854,"x":588,"y":247},{"type":"mousemove","time":2055,"x":588,"y":237},{"type":"mousedown","time":2196,"x":588,"y":233},{"type":"mousemove","time":2261,"x":588,"y":233},{"type":"mouseup","time":2297,"x":588,"y":233},{"time":2298,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2671,"x":589,"y":237},{"type":"mousemove","time":2871,"x":599,"y":308},{"type":"mousemove","time":3072,"x":591,"y":352},{"type":"mousemove","time":3279,"x":589,"y":368},{"type":"mousemove","time":3489,"x":591,"y":358},{"type":"mousedown","time":3549,"x":591,"y":358},{"type":"mouseup","time":3616,"x":591,"y":358},{"time":3617,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3701,"x":591,"y":358},{"type":"mousemove","time":4056,"x":591,"y":363},{"type":"mousemove","time":4257,"x":595,"y":437},{"type":"mousemove","time":4457,"x":596,"y":455},{"type":"mousemove","time":4671,"x":592,"y":487},{"type":"mousemove","time":4881,"x":593,"y":481},{"type":"mousedown","time":4944,"x":593,"y":481},{"type":"mouseup","time":5026,"x":593,"y":481},{"time":5027,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5092,"x":593,"y":481}],"scrollY":0,"scrollX":0,"timestamp":1568042617674}] \ No newline at end of file diff --git a/test/runTest/actions/media-pie.json b/test/runTest/actions/media-pie.json new file mode 100644 index 0000000000..0bc341a65c --- /dev/null +++ b/test/runTest/actions/media-pie.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":407,"x":705,"y":561},{"type":"mousemove","time":558,"x":701,"y":554},{"type":"mousemove","time":758,"x":614,"y":399},{"type":"mousemove","time":959,"x":613,"y":388},{"type":"mouseup","time":1104,"x":613,"y":388},{"time":1105,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":1665,"x":613,"y":388},{"type":"mousemove","time":1744,"x":612,"y":388},{"type":"mousemove","time":1952,"x":454,"y":360},{"type":"mousemove","time":2174,"x":406,"y":358},{"type":"mouseup","time":2374,"x":406,"y":358},{"time":2375,"delay":400,"type":"screenshot-auto"}],"scrollY":112,"scrollX":0,"timestamp":1568042656419}] \ No newline at end of file diff --git a/test/runTest/actions/min-max-function.json b/test/runTest/actions/min-max-function.json new file mode 100644 index 0000000000..cfd0cc1fe7 --- /dev/null +++ b/test/runTest/actions/min-max-function.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":355,"x":129,"y":377},{"type":"mousemove","time":489,"x":132,"y":377},{"type":"mousemove","time":689,"x":251,"y":381},{"type":"mousemove","time":889,"x":363,"y":383},{"type":"mouseup","time":1099,"x":363,"y":383},{"time":1100,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1790,"x":363,"y":382},{"type":"mousemove","time":1990,"x":361,"y":380},{"type":"mousedown","time":2013,"x":361,"y":380},{"type":"mousemove","time":2190,"x":484,"y":380},{"type":"mousemove","time":2390,"x":517,"y":380},{"type":"mouseup","time":2500,"x":517,"y":380},{"time":2501,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568042683404}] \ No newline at end of file diff --git a/test/runTest/actions/parallel-aqi.json b/test/runTest/actions/parallel-aqi.json new file mode 100644 index 0000000000..d0d038c9a1 --- /dev/null +++ b/test/runTest/actions/parallel-aqi.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":633,"x":353,"y":429},{"type":"mousemove","time":753,"x":353,"y":427},{"type":"mousemove","time":979,"x":356,"y":390},{"type":"mousemove","time":1182,"x":356,"y":380},{"type":"mouseup","time":1329,"x":356,"y":380},{"time":1330,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":1370,"x":356,"y":381},{"type":"mousemove","time":1570,"x":359,"y":404},{"type":"mousemove","time":1770,"x":359,"y":405},{"type":"mousemove","time":1977,"x":357,"y":408},{"type":"mousedown","time":2081,"x":357,"y":408},{"type":"mousemove","time":2205,"x":357,"y":398},{"type":"mousemove","time":2411,"x":356,"y":362},{"type":"mousemove","time":2621,"x":355,"y":323},{"type":"mousemove","time":2821,"x":355,"y":315},{"type":"mouseup","time":2881,"x":355,"y":315},{"time":2882,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":3023,"x":404,"y":322},{"type":"mousemove","time":3223,"x":449,"y":343},{"type":"mousemove","time":3423,"x":450,"y":350},{"type":"mousemove","time":3623,"x":448,"y":362},{"type":"mousedown","time":3670,"x":448,"y":365},{"type":"mousemove","time":3823,"x":446,"y":384},{"type":"mousemove","time":4026,"x":446,"y":391},{"type":"mousemove","time":4230,"x":446,"y":397},{"type":"mouseup","time":4317,"x":446,"y":397},{"time":4318,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":4490,"x":448,"y":397},{"type":"mousemove","time":4691,"x":460,"y":396},{"type":"mousemove","time":4891,"x":519,"y":328},{"type":"mousemove","time":5098,"x":525,"y":297},{"type":"mousemove","time":5325,"x":533,"y":273},{"type":"mousedown","time":5400,"x":533,"y":273},{"type":"mousemove","time":5534,"x":539,"y":304},{"type":"mousemove","time":5738,"x":542,"y":319},{"type":"mousemove","time":5938,"x":542,"y":320},{"type":"mouseup","time":5985,"x":542,"y":320},{"time":5986,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":6260,"x":542,"y":321},{"type":"mousemove","time":6460,"x":536,"y":337},{"type":"mousemove","time":6669,"x":537,"y":338},{"type":"mousedown","time":7001,"x":537,"y":338},{"type":"mouseup","time":7106,"x":537,"y":338},{"time":7107,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":7444,"x":533,"y":338},{"type":"mousemove","time":7650,"x":433,"y":331},{"type":"mousemove","time":7861,"x":441,"y":330},{"type":"mousemove","time":8067,"x":442,"y":330},{"type":"mousedown","time":8119,"x":442,"y":330},{"type":"mouseup","time":8235,"x":442,"y":330},{"time":8236,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":8419,"x":442,"y":329},{"type":"mousemove","time":8625,"x":375,"y":329},{"type":"mousemove","time":8837,"x":347,"y":362},{"type":"mousedown","time":8996,"x":347,"y":362},{"type":"mouseup","time":9102,"x":347,"y":362},{"time":9103,"delay":1000,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568042705560}] \ No newline at end of file diff --git a/test/runTest/actions/parallel-nutrients.json b/test/runTest/actions/parallel-nutrients.json new file mode 100644 index 0000000000..6f195f21fe --- /dev/null +++ b/test/runTest/actions/parallel-nutrients.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":183,"x":486,"y":483},{"type":"mousedown","time":379,"x":484,"y":482},{"type":"mousemove","time":393,"x":486,"y":482},{"type":"mousemove","time":598,"x":621,"y":483},{"type":"mousemove","time":807,"x":647,"y":482},{"type":"mouseup","time":879,"x":647,"y":482},{"time":880,"delay":2000,"type":"screenshot-auto"},{"type":"mousemove","time":954,"x":645,"y":482},{"type":"mousemove","time":1157,"x":634,"y":483},{"type":"mousemove","time":1358,"x":602,"y":483},{"type":"mousemove","time":1635,"x":606,"y":482},{"type":"mousedown","time":1750,"x":606,"y":482},{"type":"mousemove","time":1864,"x":561,"y":483},{"type":"mousemove","time":2075,"x":504,"y":486},{"type":"mouseup","time":2162,"x":504,"y":486},{"time":2163,"delay":2000,"type":"screenshot-auto"},{"type":"mousemove","time":2602,"x":504,"y":486},{"type":"mousemove","time":2802,"x":534,"y":484},{"type":"mousemove","time":3003,"x":545,"y":484},{"type":"mousemove","time":3203,"x":573,"y":481},{"type":"mousedown","time":3363,"x":573,"y":481},{"type":"mousemove","time":3454,"x":576,"y":481},{"type":"mousemove","time":3658,"x":628,"y":477},{"type":"mousemove","time":3861,"x":635,"y":477},{"type":"mousemove","time":4068,"x":653,"y":476},{"type":"mouseup","time":4119,"x":653,"y":476},{"time":4120,"delay":2000,"type":"screenshot-auto"},{"type":"mousemove","time":4203,"x":652,"y":476},{"type":"mousemove","time":4431,"x":652,"y":476},{"type":"mousemove","time":4562,"x":652,"y":476},{"type":"mousemove","time":4763,"x":580,"y":467},{"type":"mousemove","time":4967,"x":358,"y":401},{"type":"mousemove","time":5176,"x":350,"y":398},{"type":"mousemove","time":5388,"x":346,"y":397},{"type":"mousemove","time":5597,"x":232,"y":425},{"type":"mousemove","time":5803,"x":122,"y":426},{"type":"mousemove","time":6014,"x":119,"y":415},{"type":"mousedown","time":6109,"x":119,"y":415},{"type":"mouseup","time":6190,"x":119,"y":415},{"time":6191,"delay":2000,"type":"screenshot-auto"},{"type":"mousemove","time":6241,"x":119,"y":415},{"type":"mousemove","time":6295,"x":119,"y":415},{"type":"mousemove","time":6538,"x":119,"y":416}],"scrollY":0,"scrollX":0,"timestamp":1568042853461}] \ No newline at end of file diff --git a/test/runTest/actions/pictorial-repeat.json b/test/runTest/actions/pictorial-repeat.json new file mode 100644 index 0000000000..f60a790606 --- /dev/null +++ b/test/runTest/actions/pictorial-repeat.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":497,"x":426,"y":71},{"type":"mouseup","time":590,"x":426,"y":71},{"time":591,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":653,"x":426,"y":71},{"type":"mousemove","time":875,"x":488,"y":74},{"type":"mousemove","time":1111,"x":521,"y":74},{"type":"mousemove","time":1393,"x":521,"y":74},{"type":"mousemove","time":1627,"x":521,"y":74},{"type":"mousedown","time":1666,"x":521,"y":74},{"type":"mouseup","time":1760,"x":521,"y":74},{"time":1761,"delay":600,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568042884647},{"name":"Action 2","ops":[{"type":"mousedown","time":460,"x":410,"y":75},{"type":"mouseup","time":558,"x":410,"y":75},{"time":559,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":1242,"x":410,"y":75},{"type":"mousemove","time":1479,"x":502,"y":78},{"type":"mousemove","time":1687,"x":503,"y":77},{"type":"mousedown","time":1794,"x":503,"y":77},{"type":"mouseup","time":1893,"x":503,"y":77},{"time":1894,"delay":600,"type":"screenshot-auto"}],"scrollY":549,"scrollX":0,"timestamp":1568042891667},{"name":"Action 3","ops":[{"type":"mousedown","time":352,"x":383,"y":97},{"type":"mouseup","time":419,"x":383,"y":97},{"time":420,"delay":600,"type":"screenshot-auto"},{"type":"mousedown","time":1180,"x":383,"y":97},{"type":"mouseup","time":1262,"x":383,"y":97},{"time":1263,"delay":600,"type":"screenshot-auto"}],"scrollY":1089,"scrollX":0,"timestamp":1568042900382},{"name":"Action 4","ops":[{"type":"mousedown","time":544,"x":355,"y":42},{"type":"mouseup","time":629,"x":355,"y":42},{"time":630,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":1139,"x":357,"y":42},{"type":"mousemove","time":1352,"x":451,"y":39},{"type":"mousemove","time":1569,"x":451,"y":39},{"type":"mousedown","time":1590,"x":451,"y":39},{"type":"mouseup","time":1681,"x":451,"y":39},{"time":1682,"delay":600,"type":"screenshot-auto"}],"scrollY":2257,"scrollX":0,"timestamp":1568042907388},{"name":"Action 5","ops":[{"type":"mousedown","time":438,"x":382,"y":117},{"type":"mouseup","time":511,"x":382,"y":117},{"time":512,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":1165,"x":392,"y":117},{"type":"mousemove","time":1365,"x":465,"y":117},{"type":"mousedown","time":1597,"x":465,"y":117},{"type":"mouseup","time":1673,"x":465,"y":117},{"time":1674,"delay":600,"type":"screenshot-auto"}],"scrollY":2732,"scrollX":0,"timestamp":1568042920348}] \ No newline at end of file diff --git a/test/runTest/actions/pie-action.json b/test/runTest/actions/pie-action.json new file mode 100644 index 0000000000..930c91c7ab --- /dev/null +++ b/test/runTest/actions/pie-action.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":575,"x":12,"y":44},{"type":"mouseup","time":647,"x":12,"y":44},{"time":648,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":1286,"x":14,"y":44},{"type":"mousemove","time":1493,"x":43,"y":42},{"type":"mousemove","time":1710,"x":48,"y":41},{"type":"mousemove","time":1821,"x":45,"y":42},{"type":"mousedown","time":1976,"x":37,"y":42},{"type":"mousemove","time":2026,"x":37,"y":42},{"type":"mouseup","time":2079,"x":37,"y":42},{"time":2080,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":2705,"x":36,"y":45},{"type":"mousemove","time":2905,"x":18,"y":98},{"type":"mousemove","time":3111,"x":14,"y":111},{"type":"mousedown","time":3162,"x":14,"y":111},{"type":"mouseup","time":3249,"x":14,"y":111},{"time":3250,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":3345,"x":14,"y":111},{"type":"mousemove","time":3856,"x":17,"y":112},{"type":"mousemove","time":4056,"x":38,"y":111},{"type":"mousemove","time":4264,"x":40,"y":111},{"type":"mousedown","time":4280,"x":40,"y":111},{"type":"mouseup","time":4381,"x":40,"y":111},{"time":4382,"delay":600,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568042938843}] \ No newline at end of file diff --git a/test/runTest/actions/pie-calculable.json b/test/runTest/actions/pie-calculable.json new file mode 100644 index 0000000000..e9f534f708 --- /dev/null +++ b/test/runTest/actions/pie-calculable.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":76,"x":253,"y":213},{"type":"mousedown","time":247,"x":253,"y":213},{"type":"mousemove","time":320,"x":252,"y":212},{"type":"mousemove","time":521,"x":158,"y":177},{"type":"mousemove","time":727,"x":125,"y":159},{"type":"mouseup","time":942,"x":121,"y":156},{"time":943,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":948,"x":121,"y":156},{"type":"mousemove","time":1437,"x":136,"y":163},{"type":"mousemove","time":1646,"x":433,"y":226},{"type":"mousemove","time":1854,"x":463,"y":220},{"type":"mousedown","time":2012,"x":463,"y":220},{"type":"mousemove","time":2062,"x":463,"y":220},{"type":"mousemove","time":2271,"x":347,"y":155},{"type":"mousemove","time":2472,"x":227,"y":151},{"type":"mousemove","time":2686,"x":172,"y":146},{"type":"mousemove","time":2895,"x":153,"y":144},{"type":"mouseup","time":2947,"x":153,"y":144},{"time":2948,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":3105,"x":153,"y":145},{"type":"mousemove","time":3306,"x":158,"y":156},{"type":"mousemove","time":3506,"x":461,"y":220},{"type":"mousemove","time":3706,"x":574,"y":267},{"type":"mousedown","time":3834,"x":581,"y":269},{"type":"mousemove","time":3907,"x":565,"y":267},{"type":"mousemove","time":4107,"x":217,"y":250},{"type":"mousemove","time":4308,"x":113,"y":238},{"type":"mousemove","time":4514,"x":75,"y":232},{"type":"mousemove","time":4726,"x":112,"y":227},{"type":"mouseup","time":4892,"x":113,"y":227},{"time":4893,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":4965,"x":112,"y":227}],"scrollY":4,"scrollX":0,"timestamp":1568042953365}] \ No newline at end of file diff --git a/test/runTest/actions/pie.json b/test/runTest/actions/pie.json new file mode 100644 index 0000000000..f22c2049f8 --- /dev/null +++ b/test/runTest/actions/pie.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"inside","time":1802,"target":"select"},{"time":1803,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":2414,"x":654,"y":30},{"type":"mousemove","time":2615,"x":642,"y":22},{"type":"mousemove","time":2823,"x":638,"y":19},{"type":"mousemove","time":3040,"x":637,"y":17},{"type":"mousedown","time":3140,"x":637,"y":17},{"type":"mouseup","time":3240,"x":637,"y":17},{"time":3241,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":4399,"x":637,"y":19},{"type":"mousemove","time":4599,"x":641,"y":38},{"type":"valuechange","selector":"div.dg.ac>div.dg.main.a>ul>li.cr.string>div>div.c>select","value":"outside","time":5795,"target":"select"},{"time":5796,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":6310,"x":641,"y":54},{"type":"mousemove","time":6517,"x":653,"y":66},{"type":"mousemove","time":6727,"x":634,"y":69},{"type":"mousemove","time":6928,"x":633,"y":69},{"type":"mousedown","time":7067,"x":633,"y":69},{"type":"mousemove","time":7131,"x":634,"y":70},{"type":"mousemove","time":7344,"x":681,"y":73},{"type":"mousemove","time":7569,"x":688,"y":73},{"type":"mouseup","time":7754,"x":688,"y":73},{"time":7755,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":7776,"x":688,"y":73},{"type":"mousedown","time":8468,"x":688,"y":73},{"type":"mousemove","time":8528,"x":686,"y":73},{"type":"mousemove","time":8738,"x":645,"y":72},{"type":"mousemove","time":8939,"x":630,"y":73},{"type":"mouseup","time":9192,"x":630,"y":73},{"time":9193,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":9221,"x":630,"y":73},{"type":"mousemove","time":9312,"x":630,"y":76},{"type":"mousemove","time":9513,"x":627,"y":98},{"type":"mousemove","time":9714,"x":627,"y":100},{"type":"mousedown","time":9777,"x":627,"y":100},{"type":"mousemove","time":9914,"x":638,"y":100},{"type":"mousemove","time":10130,"x":674,"y":101},{"type":"mousemove","time":10343,"x":697,"y":99},{"type":"mouseup","time":10492,"x":697,"y":99},{"time":10493,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":11932,"x":697,"y":99}],"scrollY":0,"scrollX":0,"timestamp":1568042984157}] \ No newline at end of file diff --git a/test/runTest/actions/polarLine.json b/test/runTest/actions/polarLine.json new file mode 100644 index 0000000000..152495f813 --- /dev/null +++ b/test/runTest/actions/polarLine.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":977,"x":448,"y":195},{"type":"mousemove","time":1177,"x":494,"y":218},{"type":"mousemove","time":1377,"x":508,"y":259},{"type":"mousemove","time":1578,"x":511,"y":315},{"type":"mousemove","time":1778,"x":497,"y":353},{"type":"mousemove","time":1978,"x":472,"y":378},{"type":"mousemove","time":2178,"x":387,"y":402},{"type":"mousemove","time":2378,"x":318,"y":396},{"type":"mousemove","time":2578,"x":287,"y":381},{"type":"mousemove","time":2779,"x":236,"y":312},{"type":"mousemove","time":2979,"x":240,"y":285},{"type":"mousemove","time":3179,"x":277,"y":217},{"type":"mousemove","time":3380,"x":311,"y":186},{"type":"mousemove","time":3589,"x":331,"y":172},{"type":"mousemove","time":4987,"x":332,"y":169},{"type":"mousemove","time":5188,"x":345,"y":77},{"type":"mousemove","time":5397,"x":348,"y":46},{"type":"mousemove","time":5616,"x":351,"y":27},{"type":"mousemove","time":5822,"x":351,"y":20},{"type":"mousedown","time":5904,"x":351,"y":20},{"type":"mouseup","time":6018,"x":351,"y":20},{"time":6019,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":6406,"x":352,"y":20},{"type":"mousemove","time":6616,"x":390,"y":15},{"type":"mousedown","time":6768,"x":390,"y":15},{"type":"mousemove","time":6833,"x":390,"y":15},{"type":"mouseup","time":6867,"x":390,"y":15},{"time":6868,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":6957,"x":394,"y":15},{"type":"mousemove","time":7157,"x":452,"y":19},{"type":"mousemove","time":7365,"x":461,"y":17},{"type":"mousedown","time":7487,"x":461,"y":17},{"type":"mouseup","time":7584,"x":461,"y":17},{"time":7585,"delay":1000,"type":"screenshot-auto"},{"type":"mousedown","time":8451,"x":461,"y":17},{"type":"mouseup","time":8529,"x":461,"y":17},{"time":8530,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":9775,"x":460,"y":17},{"type":"mousemove","time":9975,"x":417,"y":14},{"type":"mousedown","time":10053,"x":417,"y":15},{"type":"mouseup","time":10158,"x":417,"y":15},{"time":10159,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":10183,"x":417,"y":15},{"type":"mousemove","time":11411,"x":411,"y":15},{"type":"mousemove","time":11621,"x":333,"y":19},{"type":"mousedown","time":11690,"x":333,"y":19},{"type":"mousemove","time":11808,"x":333,"y":20},{"type":"mouseup","time":11814,"x":333,"y":20},{"time":11815,"delay":1000,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568043084264}] \ No newline at end of file diff --git a/test/runTest/actions/polarScatter.json b/test/runTest/actions/polarScatter.json new file mode 100644 index 0000000000..5306239fc4 --- /dev/null +++ b/test/runTest/actions/polarScatter.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":695,"x":471,"y":20},{"type":"mouseup","time":782,"x":471,"y":20},{"time":783,"delay":1000,"type":"screenshot-auto"},{"type":"mousedown","time":1697,"x":471,"y":20},{"type":"mouseup","time":1811,"x":471,"y":20},{"time":1812,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":2239,"x":469,"y":20},{"type":"mousemove","time":2440,"x":424,"y":21},{"type":"mousemove","time":2652,"x":422,"y":21},{"type":"mousedown","time":2668,"x":422,"y":21},{"type":"mouseup","time":2735,"x":422,"y":21},{"time":2736,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":2868,"x":422,"y":21},{"type":"mousedown","time":3257,"x":422,"y":21},{"type":"mouseup","time":3355,"x":422,"y":21},{"time":3356,"delay":1000,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568043113766}] \ No newline at end of file diff --git a/test/runTest/actions/radar.json b/test/runTest/actions/radar.json new file mode 100644 index 0000000000..a7cb593248 --- /dev/null +++ b/test/runTest/actions/radar.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":340,"x":163,"y":20},{"type":"mouseup","time":450,"x":163,"y":20},{"time":451,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":510,"x":168,"y":20},{"type":"mousemove","time":711,"x":320,"y":20},{"type":"mousemove","time":916,"x":339,"y":19},{"type":"mousedown","time":967,"x":339,"y":19},{"type":"mouseup","time":1060,"x":339,"y":19},{"time":1061,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":1161,"x":341,"y":19},{"type":"mousemove","time":1361,"x":613,"y":16},{"type":"mousemove","time":1567,"x":643,"y":16},{"type":"mousedown","time":1619,"x":643,"y":16},{"type":"mouseup","time":1704,"x":643,"y":16},{"time":1705,"delay":500,"type":"screenshot-auto"},{"type":"mousedown","time":2574,"x":643,"y":16},{"type":"mouseup","time":2684,"x":643,"y":16},{"time":2685,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":2761,"x":642,"y":16},{"type":"mousemove","time":2963,"x":564,"y":22},{"type":"mousemove","time":3163,"x":520,"y":20},{"type":"mousedown","time":3306,"x":517,"y":18},{"type":"mousemove","time":3372,"x":517,"y":18},{"type":"mouseup","time":3391,"x":517,"y":18},{"time":3392,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":3820,"x":508,"y":19},{"type":"mousemove","time":4020,"x":227,"y":17},{"type":"mousedown","time":4182,"x":226,"y":17},{"type":"mousemove","time":4229,"x":226,"y":17},{"type":"mouseup","time":4285,"x":226,"y":17},{"time":4286,"delay":500,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568043188752}] \ No newline at end of file diff --git a/test/runTest/actions/radar2.json b/test/runTest/actions/radar2.json new file mode 100644 index 0000000000..94dea8caea --- /dev/null +++ b/test/runTest/actions/radar2.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"screenshot","time":988},{"type":"mousemove","time":1182,"x":193,"y":18},{"type":"mousemove","time":1387,"x":234,"y":40},{"type":"mousemove","time":1606,"x":241,"y":43},{"type":"screenshot","time":2473},{"type":"mousedown","time":3089,"x":241,"y":43},{"type":"mouseup","time":3166,"x":241,"y":43},{"time":3167,"delay":500,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568043179047}] \ No newline at end of file diff --git a/test/runTest/actions/radar3.json b/test/runTest/actions/radar3.json new file mode 100644 index 0000000000..bda3a98156 --- /dev/null +++ b/test/runTest/actions/radar3.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":493,"x":232,"y":18},{"type":"mouseup","time":586,"x":232,"y":18},{"time":587,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":803,"x":241,"y":18},{"type":"mousemove","time":1008,"x":307,"y":20},{"type":"mousedown","time":1144,"x":307,"y":20},{"type":"mouseup","time":1244,"x":307,"y":20},{"time":1245,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":1353,"x":308,"y":20},{"type":"mousemove","time":1553,"x":372,"y":21},{"type":"mousemove","time":1754,"x":418,"y":17},{"type":"mousedown","time":1808,"x":418,"y":17},{"type":"mouseup","time":1918,"x":418,"y":17},{"time":1919,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":1935,"x":418,"y":17},{"type":"mousemove","time":2135,"x":471,"y":21},{"type":"mousemove","time":2346,"x":513,"y":21},{"type":"mousedown","time":2419,"x":513,"y":21},{"type":"mouseup","time":2520,"x":513,"y":21},{"time":2521,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":2546,"x":513,"y":21},{"type":"mousemove","time":2579,"x":514,"y":21},{"type":"mousemove","time":2779,"x":576,"y":25},{"type":"mousemove","time":2986,"x":586,"y":24},{"type":"mousedown","time":3036,"x":586,"y":24},{"type":"mouseup","time":3105,"x":586,"y":24},{"time":3106,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":3252,"x":586,"y":24},{"type":"mousemove","time":3346,"x":586,"y":24},{"type":"mousedown","time":3593,"x":586,"y":24},{"type":"mouseup","time":3676,"x":586,"y":24},{"time":3677,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":3780,"x":584,"y":24},{"type":"mousemove","time":3980,"x":537,"y":24},{"type":"mousemove","time":4188,"x":510,"y":21},{"type":"mousedown","time":4208,"x":510,"y":21},{"type":"mouseup","time":4289,"x":510,"y":21},{"time":4290,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":4347,"x":509,"y":21},{"type":"mousemove","time":4548,"x":440,"y":23},{"type":"mousemove","time":4755,"x":419,"y":22},{"type":"mousedown","time":4807,"x":419,"y":22},{"type":"mouseup","time":4890,"x":419,"y":22},{"time":4891,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":4980,"x":415,"y":22},{"type":"mousemove","time":5182,"x":336,"y":19},{"type":"mousemove","time":5392,"x":327,"y":19},{"type":"mousedown","time":5463,"x":327,"y":19},{"type":"mouseup","time":5560,"x":327,"y":19},{"time":5561,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":5650,"x":325,"y":19},{"type":"mousemove","time":5859,"x":222,"y":16},{"type":"mousedown","time":5967,"x":220,"y":16},{"type":"mouseup","time":6080,"x":220,"y":16},{"time":6081,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":6094,"x":220,"y":16}],"scrollY":0,"scrollX":0,"timestamp":1568043150308}] \ No newline at end of file diff --git a/test/runTest/actions/radar4.json b/test/runTest/actions/radar4.json new file mode 100644 index 0000000000..c39cac9714 --- /dev/null +++ b/test/runTest/actions/radar4.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":2255,"x":48,"y":20},{"type":"mousemove","time":2456,"x":48,"y":22},{"type":"screenshot","time":3105},{"type":"mousedown","time":3680,"x":48,"y":22},{"type":"mouseup","time":3777,"x":48,"y":22},{"time":3778,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":4324,"x":50,"y":22},{"type":"mousemove","time":4524,"x":88,"y":20},{"type":"mousedown","time":4689,"x":91,"y":19},{"type":"mousemove","time":4748,"x":91,"y":19},{"type":"mouseup","time":4788,"x":91,"y":19},{"time":4789,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":4892,"x":92,"y":19},{"type":"mousemove","time":5092,"x":146,"y":21},{"type":"mousemove","time":5292,"x":157,"y":22},{"type":"mousedown","time":5601,"x":157,"y":22},{"type":"mouseup","time":5671,"x":157,"y":22},{"time":5672,"delay":500,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568043164602}] \ No newline at end of file diff --git a/test/runTest/actions/sankey-depth.json b/test/runTest/actions/sankey-depth.json new file mode 100644 index 0000000000..ede22c1d05 --- /dev/null +++ b/test/runTest/actions/sankey-depth.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":255,"x":33,"y":417},{"type":"mousemove","time":455,"x":56,"y":414},{"type":"mousemove","time":660,"x":57,"y":414},{"type":"mousemove","time":1223,"x":56,"y":414},{"type":"screenshot","time":1278},{"type":"mousemove","time":1423,"x":94,"y":413},{"type":"mousemove","time":1623,"x":195,"y":410},{"type":"mousemove","time":2457,"x":195,"y":409},{"type":"screenshot","time":2474},{"type":"mousemove","time":2657,"x":203,"y":341},{"type":"mousemove","time":2866,"x":204,"y":322},{"type":"screenshot","time":3604}],"scrollY":0,"scrollX":0,"timestamp":1568043274163}] \ No newline at end of file diff --git a/test/runTest/actions/sankey-jump.json b/test/runTest/actions/sankey-jump.json new file mode 100644 index 0000000000..c0d450a36f --- /dev/null +++ b/test/runTest/actions/sankey-jump.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":520,"x":391,"y":421},{"type":"mousemove","time":721,"x":454,"y":425},{"type":"mousemove","time":928,"x":454,"y":425},{"type":"mousedown","time":943,"x":454,"y":425},{"type":"mouseup","time":1037,"x":454,"y":425},{"time":1038,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":1570,"x":453,"y":425},{"type":"mousemove","time":1770,"x":405,"y":421},{"type":"mousemove","time":1979,"x":399,"y":421},{"type":"mousedown","time":2012,"x":399,"y":421},{"type":"mouseup","time":2080,"x":399,"y":421},{"time":2081,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":2456,"x":395,"y":416},{"type":"mousemove","time":2662,"x":292,"y":256},{"type":"mousemove","time":2872,"x":261,"y":209},{"type":"mousemove","time":3078,"x":260,"y":209},{"type":"mousedown","time":3097,"x":260,"y":209},{"type":"mousemove","time":3290,"x":260,"y":199},{"type":"mousemove","time":3490,"x":263,"y":179},{"type":"mousemove","time":3697,"x":263,"y":179},{"type":"mouseup","time":3903,"x":263,"y":179},{"time":3904,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":3924,"x":263,"y":179},{"type":"mousemove","time":4124,"x":77,"y":243},{"type":"mousemove","time":4325,"x":50,"y":242},{"type":"mousedown","time":4489,"x":44,"y":231},{"type":"mousemove","time":4531,"x":44,"y":231},{"type":"mousemove","time":4741,"x":46,"y":187},{"type":"mousemove","time":4941,"x":48,"y":168},{"type":"mouseup","time":5240,"x":48,"y":168},{"time":5241,"delay":500,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568043300563}] \ No newline at end of file diff --git a/test/runTest/actions/sankey-level.json b/test/runTest/actions/sankey-level.json new file mode 100644 index 0000000000..c998d0e3fb --- /dev/null +++ b/test/runTest/actions/sankey-level.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":454,"x":52,"y":280},{"type":"mousemove","time":655,"x":57,"y":280},{"type":"mousemove","time":863,"x":57,"y":280},{"type":"mousedown","time":869,"x":57,"y":280},{"type":"mousemove","time":990,"x":57,"y":281},{"type":"mousemove","time":1213,"x":51,"y":325},{"type":"mousemove","time":1433,"x":47,"y":360},{"type":"mousemove","time":1634,"x":48,"y":371},{"type":"mouseup","time":1748,"x":48,"y":371},{"time":1749,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":1844,"x":87,"y":368},{"type":"mousemove","time":2047,"x":278,"y":359},{"type":"mousemove","time":2265,"x":250,"y":364},{"type":"mousedown","time":2755,"x":250,"y":364},{"type":"mousemove","time":2892,"x":251,"y":361},{"type":"mousemove","time":3106,"x":249,"y":303},{"type":"mousemove","time":3319,"x":248,"y":281},{"type":"mousemove","time":3519,"x":250,"y":269},{"type":"mouseup","time":3603,"x":250,"y":269},{"time":3604,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":3707,"x":256,"y":267},{"type":"mousemove","time":3908,"x":419,"y":194},{"type":"mousemove","time":4109,"x":448,"y":182},{"type":"mousemove","time":4316,"x":453,"y":181},{"type":"mousemove","time":4525,"x":452,"y":184},{"type":"mousedown","time":4532,"x":452,"y":184},{"type":"mousemove","time":4739,"x":451,"y":258},{"type":"mousemove","time":4945,"x":451,"y":330},{"type":"mouseup","time":5078,"x":451,"y":330},{"time":5079,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":5153,"x":473,"y":325},{"type":"mousemove","time":5357,"x":650,"y":321},{"type":"mousemove","time":5569,"x":638,"y":324},{"type":"mousemove","time":5769,"x":641,"y":322},{"type":"mousedown","time":5801,"x":641,"y":322},{"type":"mousemove","time":5972,"x":640,"y":381},{"type":"mousemove","time":6178,"x":646,"y":462},{"type":"mouseup","time":6349,"x":647,"y":472},{"time":6350,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":6379,"x":642,"y":472},{"type":"mousemove","time":6587,"x":483,"y":472},{"type":"mousemove","time":6798,"x":459,"y":459},{"type":"mousemove","time":7003,"x":444,"y":458},{"type":"mousedown","time":7078,"x":444,"y":458},{"type":"mousemove","time":7216,"x":524,"y":445},{"type":"mousemove","time":7417,"x":648,"y":430},{"type":"mouseup","time":7514,"x":648,"y":430},{"time":7515,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":7620,"x":548,"y":433},{"type":"mousemove","time":7820,"x":442,"y":423},{"type":"mousemove","time":8021,"x":403,"y":390},{"type":"mousemove","time":8229,"x":349,"y":374},{"type":"mousemove","time":8446,"x":225,"y":334},{"type":"mousemove","time":8656,"x":242,"y":332},{"type":"mousemove","time":8863,"x":245,"y":332},{"type":"mousemove","time":8939,"x":245,"y":332},{"type":"mousedown","time":9062,"x":247,"y":331},{"type":"mousemove","time":9142,"x":246,"y":332},{"type":"mousemove","time":9356,"x":119,"y":441},{"type":"mousemove","time":9562,"x":119,"y":443},{"type":"mouseup","time":9648,"x":119,"y":443},{"time":9649,"delay":500,"type":"screenshot-auto"},{"type":"mousemove","time":9822,"x":119,"y":443}],"scrollY":0,"scrollX":0,"timestamp":1568043333099}] \ No newline at end of file diff --git a/test/runTest/actions/scatter-random-stream-fix-axis.json b/test/runTest/actions/scatter-random-stream-fix-axis.json new file mode 100644 index 0000000000..7345f06455 --- /dev/null +++ b/test/runTest/actions/scatter-random-stream-fix-axis.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":265,"x":434,"y":580},{"type":"mousemove","time":425,"x":428,"y":580},{"type":"mousemove","time":658,"x":325,"y":581},{"type":"mouseup","time":852,"x":325,"y":581},{"time":853,"delay":2000,"type":"screenshot-auto"},{"type":"mousemove","time":1060,"x":326,"y":581},{"type":"mousemove","time":1278,"x":349,"y":581},{"type":"mousemove","time":1670,"x":349,"y":581},{"type":"mousedown","time":1677,"x":349,"y":581},{"type":"mousemove","time":1871,"x":374,"y":581},{"type":"mousemove","time":2087,"x":408,"y":579},{"type":"mouseup","time":2167,"x":408,"y":579},{"time":2168,"delay":2000,"type":"screenshot-auto"},{"type":"mousemove","time":2261,"x":407,"y":579},{"type":"mousemove","time":2462,"x":384,"y":580},{"type":"mousemove","time":2668,"x":369,"y":579},{"type":"mousemove","time":2884,"x":364,"y":579},{"type":"mousedown","time":3001,"x":364,"y":579},{"type":"mousemove","time":3095,"x":370,"y":579},{"type":"mousemove","time":3307,"x":417,"y":578},{"type":"mouseup","time":3519,"x":417,"y":578},{"time":3520,"delay":2000,"type":"screenshot-auto"},{"type":"mousemove","time":4363,"x":417,"y":577},{"type":"mousemove","time":4569,"x":398,"y":574},{"type":"mousemove","time":4788,"x":378,"y":573},{"type":"mousemove","time":5003,"x":344,"y":577},{"type":"mousemove","time":5213,"x":355,"y":576},{"type":"mousedown","time":5489,"x":355,"y":576},{"type":"mousemove","time":5798,"x":353,"y":576},{"type":"mousemove","time":6006,"x":341,"y":577},{"type":"mouseup","time":6206,"x":341,"y":577},{"time":6207,"delay":2000,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568123788771}] \ No newline at end of file diff --git a/test/runTest/actions/scatter-single-axis.json b/test/runTest/actions/scatter-single-axis.json new file mode 100644 index 0000000000..f9b969a6fd --- /dev/null +++ b/test/runTest/actions/scatter-single-axis.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":564,"x":37,"y":327},{"type":"mousemove","time":719,"x":39,"y":328},{"type":"mousemove","time":926,"x":61,"y":328},{"type":"mousemove","time":1135,"x":207,"y":323},{"type":"mousemove","time":1335,"x":384,"y":323},{"type":"mousemove","time":1536,"x":513,"y":322},{"type":"mousemove","time":1740,"x":576,"y":323},{"type":"mousemove","time":1942,"x":615,"y":323},{"type":"mouseup","time":2225,"x":615,"y":323},{"time":2226,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":2303,"x":615,"y":323},{"type":"mousemove","time":2508,"x":639,"y":331},{"type":"mousemove","time":2720,"x":653,"y":331},{"type":"mousedown","time":2799,"x":655,"y":330},{"type":"mousemove","time":2920,"x":590,"y":334},{"type":"mousemove","time":3120,"x":463,"y":342},{"type":"mousemove","time":3327,"x":458,"y":343},{"type":"mouseup","time":3362,"x":458,"y":343},{"time":3363,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":3438,"x":458,"y":341},{"type":"mousemove","time":3638,"x":451,"y":238},{"type":"mousemove","time":3838,"x":402,"y":111},{"type":"mousemove","time":4038,"x":405,"y":82},{"type":"mousemove","time":4238,"x":407,"y":65},{"type":"mousemove","time":4439,"x":407,"y":57},{"type":"mousedown","time":4502,"x":407,"y":57},{"type":"mouseup","time":4621,"x":407,"y":57},{"time":4622,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":4640,"x":407,"y":57},{"type":"mousedown","time":5282,"x":407,"y":57},{"type":"mouseup","time":5374,"x":407,"y":57},{"time":5375,"delay":200,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568043469841},{"name":"Action 2","ops":[{"type":"mousedown","time":355,"x":759,"y":584},{"type":"mousemove","time":548,"x":751,"y":582},{"type":"mousemove","time":749,"x":634,"y":565},{"type":"mousemove","time":955,"x":557,"y":562},{"type":"mousemove","time":1172,"x":462,"y":557},{"type":"mousemove","time":1375,"x":386,"y":554},{"type":"mousemove","time":1589,"x":358,"y":555},{"type":"mouseup","time":1705,"x":358,"y":555},{"time":1706,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":1958,"x":358,"y":555},{"type":"mousemove","time":2283,"x":357,"y":559},{"type":"mousemove","time":2483,"x":356,"y":580},{"type":"mousemove","time":2683,"x":358,"y":584},{"type":"mousedown","time":2891,"x":359,"y":585},{"type":"mousemove","time":2898,"x":359,"y":585},{"type":"mousemove","time":3001,"x":359,"y":585},{"type":"mousemove","time":3201,"x":314,"y":583},{"type":"mousemove","time":3409,"x":266,"y":579},{"type":"mousemove","time":3625,"x":251,"y":579},{"type":"mousemove","time":3745,"x":251,"y":579},{"type":"mouseup","time":3752,"x":251,"y":579},{"time":3753,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":4435,"x":253,"y":575},{"type":"mousemove","time":4636,"x":374,"y":363},{"type":"mousemove","time":4843,"x":384,"y":335},{"type":"mousemove","time":5061,"x":402,"y":302},{"type":"mousemove","time":5152,"x":402,"y":303},{"type":"mousedown","time":5362,"x":401,"y":308},{"type":"mousemove","time":5378,"x":401,"y":308},{"type":"mouseup","time":5482,"x":401,"y":308},{"time":5483,"delay":200,"type":"screenshot-auto"},{"type":"mousedown","time":6011,"x":401,"y":308},{"type":"mouseup","time":6087,"x":401,"y":308},{"time":6088,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":6261,"x":401,"y":308},{"type":"mousemove","time":6462,"x":394,"y":309},{"type":"mousemove","time":6669,"x":394,"y":309}],"scrollY":456,"scrollX":0,"timestamp":1568043494200},{"name":"Action 3","ops":[{"type":"mousedown","time":472,"x":761,"y":522},{"type":"mousemove","time":615,"x":761,"y":522},{"type":"mousemove","time":816,"x":709,"y":520},{"type":"mousemove","time":1016,"x":528,"y":512},{"type":"mousemove","time":1216,"x":421,"y":517},{"type":"mousemove","time":1424,"x":402,"y":519},{"type":"mouseup","time":1548,"x":402,"y":519},{"time":1549,"delay":200,"type":"screenshot-auto"},{"type":"mousedown","time":1941,"x":402,"y":519},{"type":"mousemove","time":2000,"x":399,"y":519},{"type":"mousemove","time":2200,"x":233,"y":529},{"type":"mousemove","time":2408,"x":201,"y":530},{"type":"mousemove","time":2584,"x":201,"y":530},{"type":"mouseup","time":2617,"x":201,"y":530},{"time":2618,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":2784,"x":206,"y":522},{"type":"mousemove","time":2991,"x":372,"y":311},{"type":"mousemove","time":3202,"x":385,"y":272},{"type":"mousemove","time":3409,"x":397,"y":251},{"type":"mousedown","time":3465,"x":397,"y":251},{"type":"mouseup","time":3592,"x":397,"y":252},{"time":3593,"delay":200,"type":"screenshot-auto"},{"type":"mousemove","time":3618,"x":397,"y":252},{"type":"mousedown","time":4276,"x":397,"y":252},{"type":"mouseup","time":4392,"x":397,"y":252},{"time":4393,"delay":200,"type":"screenshot-auto"}],"scrollY":159,"scrollX":0,"timestamp":1568043504884}] \ No newline at end of file diff --git a/test/runTest/actions/scatterMatrix.json b/test/runTest/actions/scatterMatrix.json new file mode 100644 index 0000000000..b0820d239b --- /dev/null +++ b/test/runTest/actions/scatterMatrix.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":654,"x":699,"y":14},{"type":"mouseup","time":763,"x":699,"y":14},{"time":764,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":958,"x":699,"y":14},{"type":"mousemove","time":1189,"x":618,"y":54},{"type":"mousedown","time":1389,"x":593,"y":57},{"type":"mousemove","time":1405,"x":593,"y":57},{"type":"mousemove","time":1683,"x":666,"y":116},{"type":"mousemove","time":1956,"x":692,"y":139},{"type":"mousemove","time":2158,"x":693,"y":140},{"type":"mouseup","time":2217,"x":693,"y":140},{"time":2218,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2274,"x":693,"y":139},{"type":"mousemove","time":2501,"x":671,"y":111},{"type":"mousedown","time":2684,"x":671,"y":110},{"type":"mousemove","time":2701,"x":671,"y":110},{"type":"mousemove","time":2959,"x":637,"y":110},{"type":"mousemove","time":3198,"x":591,"y":114},{"type":"mousemove","time":3430,"x":553,"y":120},{"type":"mousemove","time":3711,"x":525,"y":123},{"type":"mousemove","time":3912,"x":523,"y":124},{"type":"mouseup","time":4057,"x":523,"y":124},{"time":4058,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4268,"x":523,"y":123},{"type":"mousemove","time":4472,"x":530,"y":117},{"type":"mousedown","time":4542,"x":530,"y":117},{"type":"mousemove","time":4679,"x":492,"y":113},{"type":"mousemove","time":4909,"x":389,"y":110},{"type":"mousemove","time":5150,"x":373,"y":110},{"type":"mouseup","time":5394,"x":373,"y":111},{"time":5395,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5426,"x":373,"y":111},{"type":"mousemove","time":5686,"x":374,"y":110},{"type":"mousemove","time":5893,"x":374,"y":110},{"type":"mousedown","time":6103,"x":374,"y":110},{"type":"mousemove","time":6154,"x":374,"y":110},{"type":"mousemove","time":6354,"x":387,"y":154},{"type":"mousemove","time":6617,"x":396,"y":234},{"type":"mousemove","time":6873,"x":382,"y":328},{"type":"mousemove","time":7118,"x":380,"y":348},{"type":"mousemove","time":7319,"x":380,"y":349},{"type":"mousemove","time":7605,"x":380,"y":349},{"type":"mouseup","time":7782,"x":380,"y":349},{"time":7783,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7814,"x":380,"y":349},{"type":"mousemove","time":8188,"x":380,"y":349},{"type":"mousemove","time":8401,"x":411,"y":346},{"type":"mousemove","time":8611,"x":425,"y":340},{"type":"mousedown","time":8697,"x":425,"y":340},{"type":"mouseup","time":8764,"x":425,"y":340},{"time":8765,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":9205,"x":424,"y":340},{"type":"mousemove","time":9405,"x":424,"y":340}],"scrollY":0,"scrollX":0,"timestamp":1568043598918},{"name":"Action 2","ops":[{"type":"mousedown","time":480,"x":736,"y":14},{"type":"mouseup","time":581,"x":736,"y":14},{"time":582,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1223,"x":732,"y":16},{"type":"mousemove","time":1426,"x":550,"y":102},{"type":"mousemove","time":1662,"x":429,"y":131},{"type":"mousemove","time":1887,"x":452,"y":104},{"type":"mousemove","time":2088,"x":444,"y":100},{"type":"mousedown","time":2132,"x":437,"y":98},{"type":"mousemove","time":2298,"x":399,"y":88},{"type":"mousemove","time":2535,"x":349,"y":102},{"type":"mousemove","time":2763,"x":358,"y":132},{"type":"mousemove","time":3002,"x":406,"y":156},{"type":"mousemove","time":3238,"x":446,"y":143},{"type":"mousemove","time":3474,"x":450,"y":128},{"type":"mouseup","time":3620,"x":449,"y":128},{"time":3621,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3674,"x":433,"y":131},{"type":"mousedown","time":3818,"x":432,"y":130},{"type":"mousemove","time":3906,"x":421,"y":127},{"type":"mousemove","time":4138,"x":389,"y":119},{"type":"mousemove","time":4338,"x":389,"y":119},{"type":"mouseup","time":4470,"x":389,"y":119},{"time":4471,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":4973,"x":389,"y":119},{"type":"mousemove","time":5028,"x":389,"y":119},{"type":"mousemove","time":5273,"x":311,"y":237},{"type":"mousemove","time":5508,"x":267,"y":314},{"type":"mousemove","time":5730,"x":250,"y":342},{"type":"mousemove","time":6130,"x":250,"y":342},{"type":"mousemove","time":6340,"x":248,"y":343},{"type":"mousemove","time":6611,"x":243,"y":345},{"type":"mouseup","time":6739,"x":243,"y":345},{"time":6740,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7013,"x":243,"y":345},{"type":"mousemove","time":7222,"x":233,"y":344},{"type":"mousedown","time":7239,"x":233,"y":344},{"type":"mousemove","time":7459,"x":287,"y":343},{"type":"mousemove","time":7660,"x":292,"y":343},{"type":"mousemove","time":7797,"x":292,"y":343},{"type":"mouseup","time":7914,"x":292,"y":343},{"time":7915,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568043612329},{"name":"Action 3","ops":[{"type":"mousedown","time":407,"x":698,"y":13},{"type":"mouseup","time":501,"x":698,"y":13},{"time":502,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":762,"x":695,"y":15},{"type":"mousemove","time":991,"x":182,"y":306},{"type":"mousemove","time":1213,"x":98,"y":310},{"type":"mousemove","time":1415,"x":86,"y":309},{"type":"mousemove","time":1631,"x":128,"y":299},{"type":"mousemove","time":1847,"x":144,"y":289},{"type":"mousedown","time":1949,"x":146,"y":289},{"type":"mousemove","time":2049,"x":156,"y":294},{"type":"mousemove","time":2293,"x":245,"y":337},{"type":"mousemove","time":2525,"x":291,"y":370},{"type":"mousemove","time":2755,"x":346,"y":400},{"type":"mousemove","time":3003,"x":356,"y":407},{"type":"mousemove","time":3222,"x":356,"y":408},{"type":"mouseup","time":3871,"x":356,"y":408},{"time":3872,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568043628048}] \ No newline at end of file diff --git a/test/runTest/actions/stackBar-dataZoom.json b/test/runTest/actions/stackBar-dataZoom.json new file mode 100644 index 0000000000..01504b3e75 --- /dev/null +++ b/test/runTest/actions/stackBar-dataZoom.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":854,"x":677,"y":234},{"type":"mousemove","time":1054,"x":239,"y":194},{"type":"mousemove","time":1259,"x":130,"y":229},{"type":"mousemove","time":1471,"x":476,"y":202},{"type":"mousemove","time":1671,"x":717,"y":201},{"type":"mousemove","time":1876,"x":777,"y":178},{"type":"mousemove","time":2087,"x":759,"y":169},{"type":"mousemove","time":2294,"x":758,"y":168},{"type":"mousedown","time":2302,"x":758,"y":168},{"type":"mouseup","time":2412,"x":758,"y":168},{"time":2413,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2465,"x":722,"y":181},{"type":"mousemove","time":2665,"x":180,"y":208},{"type":"mousemove","time":2870,"x":84,"y":194},{"type":"mousemove","time":3071,"x":58,"y":197},{"type":"mousemove","time":3271,"x":87,"y":216},{"type":"mousemove","time":3471,"x":102,"y":218},{"type":"mousemove","time":3677,"x":105,"y":219},{"type":"mousedown","time":3828,"x":105,"y":219},{"type":"mousemove","time":3911,"x":105,"y":219},{"type":"mousemove","time":4121,"x":411,"y":272},{"type":"mousemove","time":4326,"x":500,"y":470},{"type":"mousemove","time":4537,"x":525,"y":501},{"type":"mousemove","time":4742,"x":526,"y":501},{"type":"mouseup","time":4948,"x":526,"y":501},{"time":4949,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4970,"x":525,"y":500},{"type":"mousemove","time":5170,"x":518,"y":496},{"type":"mousemove","time":5378,"x":516,"y":494},{"type":"mousemove","time":5422,"x":516,"y":493},{"type":"mousemove","time":5622,"x":745,"y":198},{"type":"mousemove","time":5828,"x":746,"y":193},{"type":"mousemove","time":6038,"x":755,"y":172},{"type":"mousemove","time":6244,"x":760,"y":169},{"type":"mousemove","time":6455,"x":241,"y":208},{"type":"mousemove","time":6661,"x":255,"y":214},{"type":"mousemove","time":6878,"x":249,"y":230},{"type":"mousemove","time":7054,"x":249,"y":230},{"type":"mousedown","time":7163,"x":250,"y":229},{"type":"mousemove","time":7257,"x":253,"y":228},{"type":"mousemove","time":7464,"x":498,"y":317},{"type":"mousemove","time":7671,"x":566,"y":461},{"type":"mousemove","time":7871,"x":589,"y":499},{"type":"mousemove","time":8077,"x":595,"y":503},{"type":"mousemove","time":8171,"x":595,"y":503},{"type":"mouseup","time":8487,"x":595,"y":503},{"time":8488,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":8588,"x":594,"y":503},{"type":"mousemove","time":8796,"x":594,"y":502},{"type":"mousemove","time":9021,"x":594,"y":502},{"type":"mousemove","time":9227,"x":586,"y":497}],"scrollY":0,"scrollX":0,"timestamp":1568192976737},{"name":"Action 2","ops":[{"type":"mousemove","time":759,"x":783,"y":144},{"type":"mousemove","time":959,"x":753,"y":114},{"type":"mousemove","time":1159,"x":757,"y":100},{"type":"mousedown","time":1305,"x":756,"y":99},{"type":"mousemove","time":1366,"x":756,"y":99},{"type":"mouseup","time":1432,"x":756,"y":99},{"time":1433,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1484,"x":756,"y":105},{"type":"mousemove","time":1684,"x":144,"y":150},{"type":"mousemove","time":1894,"x":57,"y":143},{"type":"mousemove","time":2101,"x":90,"y":152},{"type":"mousemove","time":2314,"x":104,"y":156},{"type":"mousedown","time":2489,"x":104,"y":156},{"type":"mousemove","time":2593,"x":105,"y":156},{"type":"mousemove","time":2793,"x":366,"y":235},{"type":"mousemove","time":2993,"x":443,"y":380},{"type":"mousemove","time":3193,"x":473,"y":430},{"type":"mousemove","time":3398,"x":476,"y":439},{"type":"mousemove","time":3609,"x":477,"y":449},{"type":"mousemove","time":3809,"x":468,"y":461},{"type":"mousemove","time":4010,"x":448,"y":465},{"type":"mousemove","time":4267,"x":448,"y":465},{"type":"mouseup","time":4436,"x":448,"y":465},{"time":4437,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4526,"x":449,"y":464},{"type":"mousemove","time":4726,"x":485,"y":437},{"type":"mousemove","time":4927,"x":578,"y":349},{"type":"mousemove","time":5127,"x":709,"y":192},{"type":"mousemove","time":5334,"x":768,"y":132},{"type":"mousemove","time":5543,"x":771,"y":111},{"type":"mousemove","time":5743,"x":732,"y":110},{"type":"mousemove","time":5944,"x":377,"y":146},{"type":"mousemove","time":6154,"x":231,"y":179},{"type":"mousemove","time":6361,"x":227,"y":178},{"type":"mousemove","time":6569,"x":232,"y":171},{"type":"mousedown","time":6737,"x":234,"y":163},{"type":"mousemove","time":6783,"x":234,"y":163},{"type":"mousemove","time":6995,"x":479,"y":258},{"type":"mousemove","time":7203,"x":562,"y":397},{"type":"mousemove","time":7410,"x":597,"y":439},{"type":"mousemove","time":7617,"x":602,"y":445},{"type":"mousemove","time":7866,"x":601,"y":445},{"type":"mousemove","time":8044,"x":601,"y":445},{"type":"mouseup","time":8060,"x":601,"y":445},{"time":8061,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":8249,"x":601,"y":443},{"type":"mousemove","time":8461,"x":601,"y":443},{"type":"mousemove","time":8668,"x":602,"y":444},{"type":"mousemove","time":8794,"x":602,"y":443},{"type":"mousemove","time":9001,"x":602,"y":442},{"type":"mousemove","time":9127,"x":602,"y":442},{"type":"mousemove","time":9334,"x":603,"y":442},{"type":"mousemove","time":9411,"x":604,"y":442},{"type":"mousemove","time":9618,"x":758,"y":389}],"scrollY":506,"scrollX":0,"timestamp":1568192997548},{"name":"Action 3","ops":[{"type":"mousemove","time":674,"x":505,"y":227},{"type":"mousemove","time":874,"x":421,"y":253},{"type":"mousemove","time":1075,"x":378,"y":254},{"type":"mousemove","time":1281,"x":369,"y":244},{"type":"mousedown","time":1481,"x":359,"y":237},{"type":"mousemove","time":1498,"x":359,"y":237},{"type":"mouseup","time":1648,"x":359,"y":237},{"time":1649,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1691,"x":359,"y":237},{"type":"mousemove","time":1896,"x":373,"y":265},{"type":"mousemove","time":11175,"x":373,"y":264},{"type":"mousemove","time":11381,"x":374,"y":260},{"type":"mousedown","time":11581,"x":374,"y":260},{"type":"mousemove","time":11598,"x":374,"y":260},{"type":"mouseup","time":11705,"x":374,"y":260},{"time":11706,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":12207,"x":373,"y":260},{"type":"mousemove","time":12409,"x":352,"y":264},{"type":"mousemove","time":14041,"x":352,"y":262},{"type":"mousemove","time":14251,"x":349,"y":248},{"type":"mousedown","time":14486,"x":349,"y":248},{"type":"mouseup","time":14688,"x":349,"y":248},{"time":14689,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":15041,"x":349,"y":248},{"type":"mousedown","time":16850,"x":349,"y":248},{"type":"mouseup","time":17032,"x":349,"y":248},{"time":17033,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":17557,"x":350,"y":248},{"type":"mousemove","time":17765,"x":376,"y":250}],"scrollY":986,"scrollX":0,"timestamp":1568193017000},{"name":"Action 4","ops":[{"type":"mousemove","time":472,"x":778,"y":344},{"type":"mousemove","time":681,"x":777,"y":375},{"type":"mousemove","time":923,"x":783,"y":84},{"type":"mousemove","time":1123,"x":749,"y":70},{"type":"mousemove","time":1323,"x":752,"y":66},{"type":"mousemove","time":1530,"x":756,"y":66},{"type":"mousemove","time":1739,"x":762,"y":65},{"type":"mousedown","time":1846,"x":770,"y":62},{"type":"mousemove","time":1939,"x":771,"y":64},{"type":"mouseup","time":1956,"x":771,"y":64},{"time":1957,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2140,"x":280,"y":149},{"type":"mousemove","time":2349,"x":213,"y":115},{"type":"mousemove","time":2556,"x":203,"y":121},{"type":"mousemove","time":2756,"x":212,"y":128},{"type":"mousemove","time":2958,"x":216,"y":133},{"type":"mousemove","time":3173,"x":213,"y":148},{"type":"mousemove","time":3373,"x":195,"y":166},{"type":"mousemove","time":3573,"x":185,"y":135},{"type":"mousemove","time":3773,"x":175,"y":127},{"type":"mousemove","time":3980,"x":164,"y":123},{"type":"mousemove","time":4189,"x":497,"y":124},{"type":"mousemove","time":4389,"x":670,"y":95},{"type":"mousemove","time":4590,"x":759,"y":91},{"type":"mousemove","time":4798,"x":763,"y":77},{"type":"mousemove","time":5008,"x":762,"y":67},{"type":"mousedown","time":5148,"x":762,"y":65},{"type":"mousemove","time":5215,"x":762,"y":65},{"type":"mouseup","time":5233,"x":762,"y":65},{"time":5234,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5424,"x":474,"y":123},{"type":"mousemove","time":5626,"x":272,"y":130},{"type":"mousemove","time":5836,"x":189,"y":131},{"type":"mousemove","time":6041,"x":158,"y":122},{"type":"mousemove","time":6252,"x":158,"y":120},{"type":"mousedown","time":6289,"x":160,"y":118},{"type":"mousemove","time":6459,"x":215,"y":123},{"type":"mousemove","time":6666,"x":428,"y":209},{"type":"mousemove","time":6882,"x":500,"y":360},{"type":"mousemove","time":7086,"x":586,"y":375},{"type":"mousemove","time":7297,"x":625,"y":369},{"type":"mousemove","time":7490,"x":625,"y":369},{"type":"mouseup","time":7525,"x":624,"y":370},{"time":7526,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7691,"x":608,"y":367},{"type":"mousemove","time":7891,"x":602,"y":343},{"type":"mousemove","time":8113,"x":698,"y":117},{"type":"mousemove","time":8319,"x":742,"y":91},{"type":"mousemove","time":8526,"x":210,"y":134},{"type":"mousemove","time":8734,"x":197,"y":139},{"type":"mousemove","time":8941,"x":165,"y":136},{"type":"mousemove","time":9152,"x":155,"y":135},{"type":"mousedown","time":9219,"x":156,"y":135},{"type":"mousemove","time":9357,"x":202,"y":135},{"type":"mousemove","time":9557,"x":411,"y":165},{"type":"mousemove","time":9768,"x":490,"y":317},{"type":"mousemove","time":9975,"x":526,"y":359},{"type":"mousemove","time":10183,"x":526,"y":359},{"type":"mouseup","time":10234,"x":526,"y":359},{"time":10235,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":10395,"x":509,"y":330},{"type":"mousemove","time":10603,"x":398,"y":128},{"type":"mousemove","time":10816,"x":297,"y":55},{"type":"mousemove","time":11023,"x":337,"y":78},{"type":"mousemove","time":11223,"x":325,"y":62},{"type":"mousedown","time":11333,"x":323,"y":59},{"type":"mousemove","time":11424,"x":323,"y":59},{"type":"mouseup","time":11444,"x":323,"y":59},{"time":11445,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":11633,"x":323,"y":61},{"type":"mousedown","time":12886,"x":323,"y":61},{"type":"mouseup","time":12970,"x":323,"y":61},{"time":12971,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":13007,"x":323,"y":61},{"type":"mousemove","time":13207,"x":333,"y":62},{"type":"mousemove","time":13417,"x":427,"y":73},{"type":"mousemove","time":13623,"x":439,"y":71},{"type":"mousemove","time":13832,"x":450,"y":69},{"type":"mousemove","time":14806,"x":450,"y":68},{"type":"mousemove","time":15014,"x":449,"y":65},{"type":"mousemove","time":17055,"x":450,"y":65},{"type":"mousemove","time":17255,"x":457,"y":72},{"type":"mousemove","time":17456,"x":410,"y":259},{"type":"mousemove","time":17656,"x":475,"y":294},{"type":"mousemove","time":17856,"x":485,"y":290},{"type":"mousemove","time":18066,"x":481,"y":295}],"scrollY":1423,"scrollX":0,"timestamp":1568193043635},{"name":"Action 5","ops":[{"type":"mousemove","time":549,"x":678,"y":344},{"type":"mousemove","time":749,"x":373,"y":115},{"type":"mousemove","time":952,"x":192,"y":32},{"type":"mousemove","time":1152,"x":135,"y":90},{"type":"mousemove","time":1367,"x":61,"y":107},{"type":"mousemove","time":1567,"x":91,"y":165},{"type":"mousemove","time":1774,"x":85,"y":135},{"type":"mousemove","time":1990,"x":86,"y":99},{"type":"mousemove","time":2200,"x":84,"y":100},{"type":"mousemove","time":2407,"x":83,"y":101},{"type":"mousemove","time":2566,"x":83,"y":101},{"type":"mousemove","time":2767,"x":83,"y":99},{"type":"mousemove","time":3012,"x":83,"y":96},{"type":"mousemove","time":3184,"x":83,"y":96},{"type":"mousedown","time":3254,"x":83,"y":96},{"type":"mouseup","time":3358,"x":83,"y":96},{"time":3359,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3583,"x":83,"y":96},{"type":"mousedown","time":3757,"x":83,"y":96},{"type":"mouseup","time":3843,"x":83,"y":96},{"time":3844,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3861,"x":83,"y":97},{"type":"mousemove","time":4061,"x":77,"y":120},{"type":"mousemove","time":4267,"x":74,"y":121},{"type":"mousemove","time":4474,"x":66,"y":127},{"type":"mousedown","time":4575,"x":67,"y":126},{"type":"mousemove","time":4684,"x":74,"y":127},{"type":"mousemove","time":4884,"x":362,"y":210},{"type":"mousemove","time":5089,"x":559,"y":374},{"type":"mousemove","time":5296,"x":591,"y":435},{"type":"mousemove","time":5502,"x":591,"y":437},{"type":"mouseup","time":5712,"x":592,"y":439},{"time":5713,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5761,"x":592,"y":439},{"type":"mousemove","time":5774,"x":591,"y":440},{"type":"mousemove","time":5977,"x":590,"y":440},{"type":"mousemove","time":6319,"x":587,"y":438},{"type":"mousemove","time":6526,"x":197,"y":166},{"type":"mousemove","time":6734,"x":117,"y":116},{"type":"mousemove","time":6934,"x":93,"y":107},{"type":"mousemove","time":7134,"x":126,"y":152},{"type":"mousemove","time":7344,"x":128,"y":158},{"type":"mousedown","time":7531,"x":128,"y":158},{"type":"mousemove","time":7541,"x":129,"y":158},{"type":"mousemove","time":7743,"x":486,"y":231},{"type":"mousemove","time":7942,"x":598,"y":355},{"type":"mousemove","time":8161,"x":622,"y":414},{"type":"mousemove","time":8362,"x":620,"y":440},{"type":"mousemove","time":8578,"x":621,"y":442},{"type":"mouseup","time":8588,"x":621,"y":442},{"time":8589,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":8668,"x":620,"y":443},{"type":"mousemove","time":8874,"x":618,"y":445},{"type":"mousemove","time":9080,"x":625,"y":449},{"type":"mousemove","time":9281,"x":628,"y":458},{"type":"mousemove","time":9493,"x":635,"y":463}],"scrollY":1834,"scrollX":0,"timestamp":1568193107991},{"name":"Action 6","ops":[{"type":"mousemove","time":479,"x":442,"y":253},{"type":"mousemove","time":679,"x":452,"y":262},{"type":"mousemove","time":883,"x":183,"y":217},{"type":"mousemove","time":1096,"x":178,"y":214},{"type":"mousemove","time":1296,"x":173,"y":236},{"type":"mousemove","time":1505,"x":175,"y":261},{"type":"mousemove","time":1724,"x":176,"y":263},{"type":"mousemove","time":1982,"x":177,"y":263},{"type":"mousemove","time":2183,"x":248,"y":197},{"type":"mousemove","time":2390,"x":238,"y":150},{"type":"mousemove","time":2597,"x":228,"y":147},{"type":"mousemove","time":2806,"x":231,"y":169},{"type":"mousemove","time":3013,"x":610,"y":212},{"type":"mousemove","time":3213,"x":631,"y":219},{"type":"mousemove","time":3423,"x":612,"y":214},{"type":"mousemove","time":3641,"x":226,"y":247},{"type":"mousemove","time":3843,"x":125,"y":419},{"type":"mousemove","time":4057,"x":137,"y":444},{"type":"mousemove","time":4262,"x":82,"y":463},{"type":"mousemove","time":4462,"x":64,"y":460},{"type":"mousemove","time":4670,"x":64,"y":460},{"type":"mousedown","time":4690,"x":64,"y":460},{"type":"mousemove","time":4879,"x":83,"y":461},{"type":"mousemove","time":5081,"x":142,"y":465},{"type":"mousemove","time":5284,"x":185,"y":471},{"type":"mousemove","time":5494,"x":191,"y":472},{"type":"mouseup","time":6256,"x":191,"y":472},{"time":6257,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6448,"x":192,"y":472},{"type":"mousemove","time":6648,"x":234,"y":463},{"type":"mousemove","time":6860,"x":487,"y":483},{"type":"mousemove","time":7063,"x":752,"y":514},{"type":"mousemove","time":7263,"x":780,"y":464},{"type":"mousemove","time":7463,"x":772,"y":455},{"type":"mousemove","time":7672,"x":767,"y":454},{"type":"mousedown","time":7828,"x":767,"y":454},{"type":"mousemove","time":7840,"x":767,"y":454},{"type":"mousemove","time":8054,"x":730,"y":456},{"type":"mousemove","time":8258,"x":670,"y":454},{"type":"mousemove","time":8474,"x":609,"y":445},{"type":"mousemove","time":8678,"x":603,"y":443},{"type":"mouseup","time":9046,"x":603,"y":443},{"time":9047,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":9082,"x":603,"y":443},{"type":"mousemove","time":9293,"x":512,"y":482},{"type":"mousemove","time":9506,"x":428,"y":454},{"type":"mousemove","time":9724,"x":416,"y":447},{"type":"mousemove","time":9926,"x":417,"y":458},{"type":"mousedown","time":10124,"x":417,"y":458},{"type":"mousemove","time":10144,"x":417,"y":458},{"type":"mousemove","time":10346,"x":439,"y":463},{"type":"mousemove","time":10546,"x":469,"y":464},{"type":"mousemove","time":10746,"x":496,"y":460},{"type":"mousemove","time":10947,"x":502,"y":460},{"type":"mousemove","time":11164,"x":529,"y":464},{"type":"mousemove","time":11389,"x":553,"y":467},{"type":"mousemove","time":11597,"x":579,"y":469},{"type":"mousemove","time":11797,"x":606,"y":473},{"type":"mousemove","time":12008,"x":621,"y":475},{"type":"mousemove","time":12214,"x":636,"y":477},{"type":"mousemove","time":12423,"x":638,"y":477},{"type":"mouseup","time":12575,"x":638,"y":477},{"time":12576,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":12599,"x":637,"y":477},{"type":"mousemove","time":12798,"x":650,"y":468},{"type":"mousemove","time":13005,"x":670,"y":423},{"type":"mousemove","time":13224,"x":671,"y":422},{"type":"mousemove","time":13432,"x":508,"y":280},{"type":"mousemove","time":13645,"x":452,"y":287},{"type":"mousemove","time":13859,"x":450,"y":292}],"scrollY":2277,"scrollX":0,"timestamp":1568193126195},{"name":"Action 7","ops":[{"type":"mousemove","time":604,"x":273,"y":400},{"type":"mousemove","time":813,"x":291,"y":405},{"type":"mousemove","time":1039,"x":234,"y":521},{"type":"mousemove","time":1239,"x":170,"y":586},{"type":"mousemove","time":1439,"x":103,"y":586},{"type":"mousemove","time":1648,"x":50,"y":584},{"type":"mousemove","time":1856,"x":64,"y":580},{"type":"mousemove","time":2064,"x":65,"y":579},{"type":"mousedown","time":2170,"x":65,"y":578},{"type":"mousemove","time":2286,"x":69,"y":577},{"type":"mousemove","time":2486,"x":166,"y":587},{"type":"mousemove","time":2718,"x":188,"y":590},{"type":"mousemove","time":2923,"x":215,"y":594},{"type":"mousemove","time":3123,"x":264,"y":597},{"type":"mousemove","time":3333,"x":287,"y":599},{"type":"mousemove","time":3938,"x":507,"y":599},{"type":"mousemove","time":4139,"x":718,"y":595},{"type":"mousemove","time":4348,"x":767,"y":590},{"type":"mousemove","time":4555,"x":782,"y":582},{"type":"mousemove","time":4755,"x":780,"y":580},{"type":"mousemove","time":4965,"x":773,"y":577},{"type":"mousemove","time":5215,"x":769,"y":576},{"type":"mousedown","time":5251,"x":769,"y":576},{"type":"mousemove","time":5406,"x":767,"y":576},{"type":"mousemove","time":5609,"x":692,"y":573},{"type":"mousemove","time":5829,"x":643,"y":567},{"type":"mousemove","time":6036,"x":576,"y":562},{"type":"mousemove","time":6237,"x":527,"y":559},{"type":"mousemove","time":6460,"x":506,"y":558},{"type":"mousemove","time":6694,"x":503,"y":558},{"type":"mousemove","time":6973,"x":503,"y":558},{"type":"mousemove","time":7184,"x":503,"y":558},{"type":"mouseup","time":7204,"x":502,"y":557},{"time":7205,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7395,"x":493,"y":566},{"type":"mousemove","time":7599,"x":411,"y":584},{"type":"mousemove","time":7821,"x":401,"y":581},{"type":"mousedown","time":8001,"x":401,"y":581},{"type":"mousemove","time":8160,"x":400,"y":581},{"type":"mousemove","time":8381,"x":353,"y":581},{"type":"mousemove","time":8591,"x":307,"y":577},{"type":"mousemove","time":8806,"x":258,"y":576},{"type":"mousemove","time":9006,"x":236,"y":574},{"type":"mousemove","time":9219,"x":230,"y":574},{"type":"mousemove","time":9420,"x":227,"y":573},{"type":"mousemove","time":9823,"x":226,"y":573},{"type":"mouseup","time":10934,"x":226,"y":573},{"time":10935,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":10994,"x":226,"y":573},{"type":"mousemove","time":11205,"x":229,"y":579},{"type":"mousemove","time":11428,"x":237,"y":599},{"type":"mousemove","time":11739,"x":254,"y":599},{"type":"mousemove","time":11942,"x":264,"y":587},{"type":"mousemove","time":12149,"x":270,"y":580},{"type":"mousedown","time":12483,"x":270,"y":580},{"type":"mousemove","time":12523,"x":270,"y":580},{"type":"mousemove","time":12795,"x":271,"y":580},{"type":"mousemove","time":13001,"x":310,"y":581},{"type":"mousemove","time":13206,"x":334,"y":583},{"type":"mousemove","time":13406,"x":349,"y":583},{"type":"mousemove","time":13608,"x":361,"y":583},{"type":"mousemove","time":13817,"x":373,"y":584},{"type":"mousemove","time":14273,"x":373,"y":584},{"type":"mousemove","time":14473,"x":392,"y":587},{"type":"mousemove","time":14673,"x":405,"y":588},{"type":"mouseup","time":15610,"x":405,"y":588},{"time":15611,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":15823,"x":405,"y":589},{"type":"mousemove","time":16023,"x":403,"y":597},{"type":"mousemove","time":16223,"x":401,"y":599}],"scrollY":2597,"scrollX":0,"timestamp":1568193149286}] \ No newline at end of file diff --git a/test/runTest/actions/sunburst-book.json b/test/runTest/actions/sunburst-book.json new file mode 100644 index 0000000000..b60c7fd829 --- /dev/null +++ b/test/runTest/actions/sunburst-book.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":331,"x":436,"y":235},{"type":"mousemove","time":532,"x":429,"y":269},{"type":"mousemove","time":744,"x":445,"y":247},{"type":"mousedown","time":923,"x":443,"y":234},{"type":"mousemove","time":946,"x":443,"y":234},{"type":"mouseup","time":1005,"x":443,"y":234},{"time":1006,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":1382,"x":443,"y":234},{"type":"mousemove","time":1589,"x":442,"y":235},{"type":"mousemove","time":1807,"x":426,"y":283},{"type":"mousedown","time":1928,"x":426,"y":283},{"type":"mouseup","time":2024,"x":426,"y":283},{"time":2025,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":2287,"x":426,"y":283},{"type":"mousemove","time":2487,"x":421,"y":284},{"type":"mousemove","time":2698,"x":420,"y":285},{"type":"mousemove","time":2761,"x":422,"y":285},{"type":"mousemove","time":2972,"x":449,"y":283},{"type":"mousemove","time":3178,"x":500,"y":291},{"type":"mousemove","time":3379,"x":520,"y":276},{"type":"mousemove","time":3585,"x":549,"y":253},{"type":"mousemove","time":3903,"x":547,"y":254},{"type":"mousemove","time":4107,"x":546,"y":255},{"type":"mousedown","time":4150,"x":546,"y":255},{"type":"mousemove","time":4204,"x":546,"y":255},{"type":"mouseup","time":4276,"x":546,"y":255},{"time":4277,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":4409,"x":546,"y":255},{"type":"mousemove","time":4970,"x":536,"y":262},{"type":"mousemove","time":5171,"x":411,"y":359},{"type":"mousemove","time":5378,"x":408,"y":334},{"type":"mousedown","time":5417,"x":408,"y":334},{"type":"mouseup","time":5498,"x":408,"y":334},{"time":5499,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":5617,"x":408,"y":334},{"type":"mousedown","time":6330,"x":408,"y":334},{"type":"mouseup","time":6386,"x":408,"y":334},{"time":6387,"delay":600,"type":"screenshot-auto"},{"type":"mousedown","time":7180,"x":408,"y":334},{"type":"mouseup","time":7238,"x":408,"y":334},{"time":7239,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":7740,"x":407,"y":334},{"type":"mousemove","time":7947,"x":402,"y":342},{"type":"mousemove","time":8174,"x":403,"y":328},{"type":"mousedown","time":8326,"x":403,"y":319},{"type":"mousemove","time":8375,"x":403,"y":319},{"type":"mouseup","time":8405,"x":403,"y":319},{"time":8406,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":8700,"x":403,"y":319}],"scrollY":0,"scrollX":0,"timestamp":1568043674910}] \ No newline at end of file diff --git a/test/runTest/actions/sunburst-canvas.json b/test/runTest/actions/sunburst-canvas.json new file mode 100644 index 0000000000..545566924b --- /dev/null +++ b/test/runTest/actions/sunburst-canvas.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":490,"x":394,"y":281},{"type":"mouseup","time":589,"x":394,"y":281},{"time":590,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":1499,"x":395,"y":279},{"type":"mousemove","time":1700,"x":407,"y":254},{"type":"mousedown","time":1779,"x":407,"y":254},{"type":"mouseup","time":1861,"x":407,"y":254},{"time":1862,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":1900,"x":407,"y":254},{"type":"mousemove","time":2217,"x":406,"y":254},{"type":"mousemove","time":2423,"x":395,"y":260},{"type":"mousemove","time":2635,"x":390,"y":265},{"type":"mousemove","time":2840,"x":386,"y":269},{"type":"mousedown","time":2858,"x":386,"y":269},{"type":"mouseup","time":2941,"x":386,"y":269},{"time":2942,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":4068,"x":385,"y":271},{"type":"mousemove","time":4269,"x":319,"y":337},{"type":"mousemove","time":4470,"x":249,"y":413},{"type":"mousemove","time":4671,"x":243,"y":443},{"type":"mousedown","time":4779,"x":244,"y":444},{"type":"mouseup","time":4861,"x":244,"y":444},{"time":4862,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":4876,"x":244,"y":444},{"type":"mousemove","time":5554,"x":248,"y":439},{"type":"mousemove","time":5754,"x":362,"y":305},{"type":"mousemove","time":5954,"x":365,"y":296},{"type":"mousedown","time":5979,"x":365,"y":296},{"type":"mousemove","time":6055,"x":365,"y":296},{"type":"mouseup","time":6068,"x":365,"y":296},{"time":6069,"delay":600,"type":"screenshot-auto"},{"type":"mousedown","time":7172,"x":365,"y":296},{"type":"mouseup","time":7254,"x":365,"y":296},{"time":7255,"delay":600,"type":"screenshot-auto"},{"type":"mousedown","time":8418,"x":365,"y":296},{"type":"mouseup","time":8484,"x":365,"y":296},{"time":8485,"delay":600,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568043692759}] \ No newline at end of file diff --git a/test/runTest/actions/symbol2.json b/test/runTest/actions/symbol2.json new file mode 100644 index 0000000000..629dd90bfd --- /dev/null +++ b/test/runTest/actions/symbol2.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":339,"x":40,"y":109},{"type":"mousemove","time":540,"x":57,"y":84},{"type":"mousemove","time":745,"x":59,"y":77},{"type":"mousedown","time":778,"x":59,"y":77},{"type":"mouseup","time":863,"x":59,"y":77},{"time":864,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":1306,"x":72,"y":77},{"type":"mousemove","time":1506,"x":232,"y":76},{"type":"mousemove","time":1714,"x":236,"y":75},{"type":"mousedown","time":1832,"x":236,"y":75},{"type":"mousemove","time":1839,"x":236,"y":75},{"type":"mouseup","time":1913,"x":236,"y":75},{"time":1914,"delay":600,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568043731596}] \ No newline at end of file diff --git a/test/runTest/actions/themeRiver.json b/test/runTest/actions/themeRiver.json new file mode 100644 index 0000000000..62828c2fb0 --- /dev/null +++ b/test/runTest/actions/themeRiver.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":851,"x":238,"y":139},{"type":"mousemove","time":1051,"x":228,"y":168},{"type":"mousemove","time":1259,"x":227,"y":175},{"type":"screenshot","time":1693},{"type":"mousemove","time":1903,"x":226,"y":177},{"type":"mousemove","time":2103,"x":215,"y":225},{"type":"mousemove","time":2310,"x":215,"y":235},{"type":"screenshot","time":3193},{"type":"mousemove","time":3354,"x":228,"y":238},{"type":"mousemove","time":3555,"x":447,"y":290},{"type":"mousemove","time":3759,"x":449,"y":291},{"type":"screenshot","time":4363},{"type":"mousemove","time":4472,"x":445,"y":289},{"type":"mousemove","time":4673,"x":249,"y":84},{"type":"mousemove","time":4874,"x":257,"y":65},{"type":"mousemove","time":5080,"x":262,"y":44},{"type":"mousemove","time":5294,"x":262,"y":31},{"type":"mousemove","time":5506,"x":260,"y":26},{"type":"mousedown","time":5714,"x":258,"y":22},{"type":"mousemove","time":5720,"x":258,"y":22},{"type":"mouseup","time":5799,"x":258,"y":22},{"time":5800,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":5990,"x":260,"y":22},{"type":"mousemove","time":6191,"x":303,"y":14},{"type":"mousemove","time":6399,"x":321,"y":14},{"type":"mousedown","time":6499,"x":321,"y":14},{"type":"mouseup","time":6587,"x":321,"y":14},{"time":6588,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":6627,"x":321,"y":14},{"type":"mousemove","time":6834,"x":363,"y":15},{"type":"mousemove","time":7048,"x":372,"y":16},{"type":"mousedown","time":7150,"x":372,"y":16},{"type":"mouseup","time":7247,"x":372,"y":16},{"time":7248,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":7259,"x":373,"y":16},{"type":"mousemove","time":7459,"x":407,"y":16},{"type":"mousemove","time":7666,"x":423,"y":17},{"type":"mousedown","time":7719,"x":423,"y":17},{"type":"mouseup","time":7807,"x":423,"y":17},{"time":7808,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":7876,"x":435,"y":17},{"type":"mousemove","time":8086,"x":476,"y":17},{"type":"mousedown","time":8252,"x":476,"y":17},{"type":"mouseup","time":8334,"x":476,"y":17},{"time":8335,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":8346,"x":477,"y":18},{"type":"mousemove","time":8553,"x":510,"y":19},{"type":"mousemove","time":8767,"x":538,"y":21},{"type":"mousedown","time":8969,"x":538,"y":21},{"type":"mouseup","time":9040,"x":538,"y":21},{"time":9041,"delay":300,"type":"screenshot-auto"},{"type":"mousemove","time":9050,"x":538,"y":21},{"type":"mousemove","time":9251,"x":535,"y":21}],"scrollY":0,"scrollX":0,"timestamp":1568043795915}] \ No newline at end of file diff --git a/test/runTest/actions/timeScale.json b/test/runTest/actions/timeScale.json new file mode 100644 index 0000000000..3ca6ee9e96 --- /dev/null +++ b/test/runTest/actions/timeScale.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":340,"x":91,"y":576},{"type":"mousemove","time":476,"x":97,"y":576},{"type":"mousemove","time":710,"x":138,"y":575},{"type":"mousemove","time":913,"x":169,"y":575},{"type":"mousemove","time":1116,"x":169,"y":575},{"type":"mousemove","time":1227,"x":167,"y":575},{"type":"mouseup","time":1301,"x":166,"y":575},{"time":1302,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1434,"x":159,"y":576},{"type":"mousemove","time":1628,"x":160,"y":576},{"type":"mousemove","time":1834,"x":165,"y":575},{"type":"mousedown","time":1934,"x":165,"y":575},{"type":"mousemove","time":2011,"x":168,"y":575},{"type":"mousemove","time":2246,"x":378,"y":576},{"type":"mousemove","time":2450,"x":381,"y":575},{"type":"mouseup","time":2574,"x":381,"y":575},{"time":2575,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2619,"x":382,"y":575},{"type":"mousemove","time":2825,"x":387,"y":575},{"type":"mousemove","time":3040,"x":383,"y":576},{"type":"mousedown","time":3109,"x":383,"y":576},{"type":"mousemove","time":3169,"x":387,"y":576},{"type":"mousemove","time":3382,"x":535,"y":572},{"type":"mousemove","time":3583,"x":540,"y":571},{"type":"mouseup","time":3659,"x":540,"y":571},{"time":3660,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3685,"x":545,"y":571},{"type":"mousemove","time":3886,"x":623,"y":575},{"type":"mousedown","time":4077,"x":626,"y":575},{"type":"mousemove","time":4121,"x":623,"y":575},{"type":"mousemove","time":4339,"x":447,"y":572},{"type":"mousemove","time":4543,"x":348,"y":574},{"type":"mouseup","time":4832,"x":348,"y":574},{"time":4833,"delay":400,"type":"screenshot-auto"}],"scrollY":8,"scrollX":0,"timestamp":1568043867136}] \ No newline at end of file diff --git a/test/runTest/actions/timeScale2.json b/test/runTest/actions/timeScale2.json new file mode 100644 index 0000000000..d511856336 --- /dev/null +++ b/test/runTest/actions/timeScale2.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":266,"x":121,"y":380},{"type":"mousemove","time":424,"x":163,"y":379},{"type":"mousemove","time":624,"x":358,"y":379},{"type":"mousemove","time":834,"x":393,"y":378},{"type":"mouseup","time":965,"x":393,"y":378},{"time":966,"delay":400,"type":"screenshot-auto"},{"type":"mousedown","time":1530,"x":393,"y":378},{"type":"mousemove","time":1642,"x":399,"y":378},{"type":"mousemove","time":1843,"x":470,"y":378},{"type":"mousemove","time":2047,"x":471,"y":378},{"type":"mouseup","time":2185,"x":471,"y":378},{"time":2186,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2258,"x":473,"y":379},{"type":"mousemove","time":2459,"x":526,"y":382},{"type":"mousedown","time":2665,"x":539,"y":380},{"type":"mousemove","time":2671,"x":539,"y":380},{"type":"mousemove","time":2875,"x":400,"y":387},{"type":"mousemove","time":3076,"x":331,"y":391},{"type":"mousemove","time":3284,"x":330,"y":391},{"type":"mouseup","time":3316,"x":330,"y":391},{"time":3317,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3362,"x":330,"y":392}],"scrollY":0,"scrollX":0,"timestamp":1568043879931}] \ No newline at end of file diff --git a/test/runTest/actions/toolbox-textStyle.json b/test/runTest/actions/toolbox-textStyle.json new file mode 100644 index 0000000000..2c5d3796ca --- /dev/null +++ b/test/runTest/actions/toolbox-textStyle.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":79,"x":216,"y":74},{"type":"mousemove","time":280,"x":216,"y":62},{"type":"mousemove","time":487,"x":216,"y":57},{"type":"screenshot","time":988},{"type":"mousemove","time":1398,"x":217,"y":57},{"type":"mousemove","time":1603,"x":238,"y":54},{"type":"screenshot","time":2405}],"scrollY":0,"scrollX":0,"timestamp":1568043931412}] \ No newline at end of file diff --git a/test/runTest/actions/toolbox-tooltip.json b/test/runTest/actions/toolbox-tooltip.json new file mode 100644 index 0000000000..0cdaafe122 --- /dev/null +++ b/test/runTest/actions/toolbox-tooltip.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":148,"x":346,"y":78},{"type":"mousemove","time":354,"x":365,"y":43},{"type":"mousemove","time":565,"x":368,"y":13},{"type":"mousemove","time":766,"x":368,"y":12},{"type":"screenshot","time":1455},{"type":"mousemove","time":1591,"x":369,"y":12},{"type":"mousemove","time":1791,"x":394,"y":15},{"type":"mousemove","time":1998,"x":395,"y":15}],"scrollY":0,"scrollX":0,"timestamp":1568043940036}] \ No newline at end of file diff --git a/test/runTest/actions/tooltip-axisPointer.json b/test/runTest/actions/tooltip-axisPointer.json new file mode 100644 index 0000000000..bdf429a80f --- /dev/null +++ b/test/runTest/actions/tooltip-axisPointer.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":730,"x":301,"y":359},{"type":"mousemove","time":936,"x":301,"y":359},{"type":"screenshot","time":1454},{"type":"mousemove","time":1783,"x":354,"y":359},{"type":"mousemove","time":1982,"x":507,"y":362},{"type":"mousemove","time":2213,"x":511,"y":362},{"type":"screenshot","time":2924},{"type":"mousemove","time":3391,"x":511,"y":362}],"scrollY":0,"scrollX":0,"timestamp":1568043968687},{"name":"Action 2","ops":[{"type":"mousemove","time":130,"x":520,"y":371},{"type":"mousemove","time":331,"x":556,"y":373},{"type":"mousemove","time":531,"x":556,"y":373},{"type":"screenshot","time":870},{"type":"mousemove","time":1132,"x":556,"y":373},{"type":"mousemove","time":1341,"x":381,"y":376},{"type":"mousemove","time":1549,"x":357,"y":377},{"type":"screenshot","time":2105}],"scrollY":455,"scrollX":0,"timestamp":1568043996286},{"name":"Action 3","ops":[{"type":"screenshot","time":1656},{"type":"mousemove","time":1965,"x":584,"y":287},{"type":"mousemove","time":2178,"x":371,"y":286},{"type":"mousemove","time":2382,"x":332,"y":286},{"type":"mousemove","time":2618,"x":326,"y":286}],"scrollY":969,"scrollX":0,"timestamp":1568044010192},{"name":"Action 4","ops":[{"type":"mousemove","time":189,"x":548,"y":385},{"type":"mousemove","time":397,"x":526,"y":397},{"type":"mousemove","time":622,"x":525,"y":397},{"type":"screenshot","time":1589},{"type":"mousemove","time":1690,"x":515,"y":397},{"type":"mousemove","time":1891,"x":378,"y":400},{"type":"mousemove","time":2091,"x":328,"y":402},{"type":"mousemove","time":2300,"x":324,"y":402},{"type":"screenshot","time":2804}],"scrollY":1359,"scrollX":0,"timestamp":1568044039698},{"name":"Action 5","ops":[{"type":"mousemove","time":861,"x":510,"y":420},{"type":"mousemove","time":1069,"x":525,"y":431},{"type":"mousemove","time":1311,"x":525,"y":430},{"type":"mousemove","time":1519,"x":519,"y":423},{"type":"screenshot","time":2161},{"type":"mousemove","time":2329,"x":513,"y":423},{"type":"mousemove","time":2539,"x":359,"y":381},{"type":"mousemove","time":2746,"x":357,"y":339},{"type":"mousemove","time":2946,"x":350,"y":337},{"type":"mousemove","time":3154,"x":346,"y":331},{"type":"mousemove","time":3369,"x":346,"y":330}],"scrollY":1840,"scrollX":0,"timestamp":1568044047092},{"name":"Action 6","ops":[{"type":"mousemove","time":353,"x":333,"y":392},{"type":"mousemove","time":562,"x":311,"y":412},{"type":"mousemove","time":769,"x":289,"y":433},{"type":"mousemove","time":978,"x":289,"y":434},{"type":"mousemove","time":1187,"x":295,"y":438},{"type":"mousemove","time":1396,"x":297,"y":438},{"type":"mousemove","time":1612,"x":297,"y":437},{"type":"screenshot","time":2249},{"type":"mousemove","time":2772,"x":304,"y":435},{"type":"mousemove","time":2972,"x":381,"y":387},{"type":"mousemove","time":3172,"x":413,"y":385},{"type":"mousemove","time":3372,"x":448,"y":370},{"type":"mousemove","time":3581,"x":464,"y":361},{"type":"mousemove","time":3789,"x":459,"y":343},{"type":"mousemove","time":3997,"x":447,"y":343},{"type":"screenshot","time":5023},{"type":"mousemove","time":7316,"x":456,"y":346},{"type":"mousemove","time":7527,"x":614,"y":388},{"type":"mousemove","time":8819,"x":609,"y":388},{"type":"mousemove","time":9019,"x":542,"y":357},{"type":"mousemove","time":9250,"x":437,"y":305}],"scrollY":2046,"scrollX":0,"timestamp":1568044058568},{"name":"Action 7","ops":[{"type":"mousemove","time":709,"x":499,"y":338},{"type":"mousemove","time":909,"x":443,"y":329},{"type":"mousemove","time":1609,"x":438,"y":329},{"type":"screenshot","time":1701},{"type":"mousemove","time":1810,"x":433,"y":325},{"type":"mousemove","time":2044,"x":429,"y":327},{"type":"mousemove","time":2244,"x":217,"y":312},{"type":"mousemove","time":2468,"x":193,"y":311},{"type":"mousemove","time":2687,"x":192,"y":311},{"type":"screenshot","time":3137},{"type":"mousemove","time":3663,"x":192,"y":312},{"type":"mousemove","time":3863,"x":183,"y":412},{"type":"mousemove","time":4100,"x":169,"y":472},{"type":"screenshot","time":4938},{"type":"mousemove","time":5087,"x":175,"y":472},{"type":"mousemove","time":5293,"x":369,"y":485},{"type":"mousemove","time":5512,"x":467,"y":492},{"type":"mousemove","time":5742,"x":469,"y":492},{"type":"screenshot","time":6262}],"scrollY":2629,"scrollX":0,"timestamp":1568044081232},{"name":"Action 8","ops":[{"type":"mousemove","time":1638,"x":192,"y":285},{"type":"mousemove","time":1855,"x":266,"y":294},{"type":"screenshot","time":2532},{"type":"mousemove","time":2739,"x":277,"y":293},{"type":"mousemove","time":2953,"x":495,"y":298},{"type":"mousemove","time":3161,"x":549,"y":298},{"type":"screenshot","time":3657},{"type":"mousemove","time":3815,"x":548,"y":306},{"type":"mousemove","time":4035,"x":562,"y":460},{"type":"mousemove","time":4268,"x":565,"y":468},{"type":"mousemove","time":4849,"x":564,"y":468},{"type":"mousemove","time":5049,"x":459,"y":472},{"type":"mousemove","time":5262,"x":318,"y":474},{"type":"mousemove","time":5474,"x":286,"y":471},{"type":"screenshot","time":5908}],"scrollY":3046,"scrollX":0,"timestamp":1568044093040},{"name":"Action 9","ops":[{"type":"mousemove","time":1165,"x":347,"y":430},{"type":"mousemove","time":1367,"x":284,"y":429},{"type":"mousemove","time":1596,"x":284,"y":429},{"type":"mousemove","time":1866,"x":284,"y":429},{"type":"screenshot","time":1979},{"type":"mousemove","time":2100,"x":294,"y":428},{"type":"mousemove","time":2308,"x":489,"y":381},{"type":"mousemove","time":2522,"x":572,"y":344},{"type":"screenshot","time":3345}],"scrollY":3538,"scrollX":0,"timestamp":1568044124898},{"name":"Action 10","ops":[{"type":"mousemove","time":473,"x":508,"y":393},{"type":"mousemove","time":673,"x":455,"y":399},{"type":"mousemove","time":902,"x":364,"y":404},{"type":"screenshot","time":1449},{"type":"mousemove","time":1541,"x":383,"y":406},{"type":"mousemove","time":1741,"x":584,"y":427},{"type":"mousemove","time":1956,"x":586,"y":427},{"type":"screenshot","time":2534},{"type":"mousemove","time":2725,"x":563,"y":424},{"type":"mousemove","time":2937,"x":162,"y":410},{"type":"mousemove","time":3155,"x":162,"y":409},{"type":"screenshot","time":3769},{"type":"mousemove","time":4920,"x":166,"y":409}],"scrollY":3968,"scrollX":0,"timestamp":1568044132353},{"name":"Action 11","ops":[{"type":"screenshot","time":1306},{"type":"mousemove","time":1664,"x":560,"y":440},{"type":"mousemove","time":1865,"x":539,"y":499},{"type":"mousemove","time":2074,"x":535,"y":519},{"type":"mousemove","time":3232,"x":530,"y":517},{"type":"mousemove","time":3432,"x":244,"y":462},{"type":"mousemove","time":3633,"x":214,"y":459},{"type":"screenshot","time":4364}],"scrollY":4287,"scrollX":0,"timestamp":1568044143799},{"name":"Action 12","ops":[{"type":"mousemove","time":378,"x":618,"y":403},{"type":"mousemove","time":579,"x":576,"y":383},{"type":"mousemove","time":790,"x":574,"y":381},{"type":"screenshot","time":1109},{"type":"mousemove","time":1280,"x":562,"y":380},{"type":"mousemove","time":1480,"x":268,"y":360},{"type":"mousemove","time":1696,"x":253,"y":365},{"type":"screenshot","time":2158},{"type":"mousemove","time":2398,"x":253,"y":365},{"type":"mousemove","time":2598,"x":249,"y":410},{"type":"mousemove","time":2798,"x":245,"y":424},{"type":"mousemove","time":3009,"x":245,"y":424},{"type":"screenshot","time":3240}],"scrollY":4819,"scrollX":0,"timestamp":1568044155635},{"name":"Action 13","ops":[{"type":"mousemove","time":408,"x":252,"y":425},{"type":"mousemove","time":627,"x":231,"y":417},{"type":"mousemove","time":835,"x":229,"y":417},{"type":"screenshot","time":1386},{"type":"mousemove","time":1776,"x":230,"y":417},{"type":"mousemove","time":1987,"x":256,"y":438},{"type":"mousemove","time":2206,"x":282,"y":463},{"type":"mousemove","time":2435,"x":283,"y":465},{"type":"screenshot","time":3638},{"type":"mousemove","time":4029,"x":286,"y":465},{"type":"mousemove","time":4247,"x":471,"y":458},{"type":"mousemove","time":4488,"x":556,"y":459},{"type":"screenshot","time":5331},{"type":"mousemove","time":5455,"x":557,"y":458},{"type":"mousemove","time":5673,"x":635,"y":420},{"type":"mousemove","time":5893,"x":666,"y":406},{"type":"mousemove","time":6116,"x":667,"y":405},{"type":"screenshot","time":6848},{"type":"mousemove","time":7390,"x":667,"y":405},{"type":"mousemove","time":7599,"x":666,"y":405}],"scrollY":5251,"scrollX":0,"timestamp":1568044174939},{"name":"Action 14","ops":[{"type":"mousemove","time":343,"x":626,"y":415},{"type":"mousemove","time":570,"x":613,"y":383},{"type":"mousemove","time":808,"x":614,"y":382},{"type":"mousemove","time":1066,"x":616,"y":385},{"type":"screenshot","time":1458},{"type":"mousemove","time":1551,"x":617,"y":388},{"type":"mousemove","time":1758,"x":624,"y":431},{"type":"mousemove","time":1970,"x":627,"y":440},{"type":"mousemove","time":2201,"x":630,"y":446},{"type":"screenshot","time":2780},{"type":"mousemove","time":3187,"x":628,"y":446},{"type":"mousemove","time":3408,"x":216,"y":399},{"type":"mousemove","time":3640,"x":204,"y":400},{"type":"mousemove","time":4271,"x":204,"y":400},{"type":"screenshot","time":4329},{"type":"mousemove","time":4523,"x":205,"y":400},{"type":"mousemove","time":4728,"x":262,"y":381},{"type":"mousemove","time":4928,"x":291,"y":363},{"type":"mousemove","time":5175,"x":293,"y":362},{"type":"screenshot","time":5617}],"scrollY":5604,"scrollX":0,"timestamp":1568044188709},{"name":"Action 15","ops":[{"type":"mousemove","time":205,"x":391,"y":345},{"type":"mousemove","time":406,"x":340,"y":339},{"type":"mousemove","time":607,"x":323,"y":337},{"type":"mousemove","time":815,"x":300,"y":336},{"type":"mousemove","time":922,"x":302,"y":335},{"type":"mousemove","time":1132,"x":405,"y":342},{"type":"mousemove","time":1365,"x":405,"y":342},{"type":"screenshot","time":1769},{"type":"mousemove","time":1957,"x":410,"y":342},{"type":"mousemove","time":2158,"x":676,"y":351},{"type":"mousemove","time":2370,"x":708,"y":348},{"type":"screenshot","time":3351},{"type":"mousemove","time":3492,"x":706,"y":348},{"type":"mousemove","time":3692,"x":349,"y":330},{"type":"mousemove","time":3892,"x":230,"y":335},{"type":"mousemove","time":4093,"x":141,"y":339},{"type":"mousemove","time":4302,"x":132,"y":340},{"type":"mousemove","time":4519,"x":128,"y":340}],"scrollY":5976,"scrollX":0,"timestamp":1568044230425},{"name":"Action 16","ops":[{"type":"mousemove","time":163,"x":399,"y":494},{"type":"mousemove","time":363,"x":272,"y":497},{"type":"mousemove","time":1214,"x":272,"y":497},{"type":"mousemove","time":1414,"x":327,"y":499},{"type":"mousemove","time":1619,"x":553,"y":508},{"type":"mousemove","time":1829,"x":570,"y":507},{"type":"mousemove","time":2042,"x":570,"y":507},{"type":"screenshot","time":3110},{"type":"mousemove","time":3350,"x":566,"y":507},{"type":"mousemove","time":3550,"x":422,"y":512},{"type":"mousemove","time":3751,"x":352,"y":512},{"type":"mousemove","time":3976,"x":351,"y":512},{"type":"screenshot","time":4443},{"type":"mousemove","time":4635,"x":341,"y":512},{"type":"mousemove","time":4844,"x":131,"y":502},{"type":"mousemove","time":5053,"x":131,"y":503},{"type":"mousemove","time":5253,"x":111,"y":505},{"type":"mousemove","time":5461,"x":99,"y":506},{"type":"mousemove","time":6037,"x":99,"y":506},{"type":"screenshot","time":6113},{"type":"mousemove","time":6247,"x":99,"y":507},{"type":"mousemove","time":6671,"x":105,"y":507}],"scrollY":5976,"scrollX":0,"timestamp":1568044249384},{"name":"Action 17","ops":[{"type":"mousemove","time":1125,"x":538,"y":501},{"type":"mousemove","time":1325,"x":499,"y":500},{"type":"screenshot","time":2010},{"type":"mousemove","time":2165,"x":492,"y":501},{"type":"mousemove","time":2366,"x":246,"y":504},{"type":"screenshot","time":3095},{"type":"mousemove","time":3301,"x":256,"y":504},{"type":"mousemove","time":3504,"x":553,"y":506},{"type":"mousemove","time":3706,"x":686,"y":506},{"type":"mousemove","time":3913,"x":687,"y":505},{"type":"screenshot","time":4413}],"scrollY":6267,"scrollX":0,"timestamp":1568044278351},{"name":"Action 18","ops":[{"type":"mousemove","time":147,"x":464,"y":299},{"type":"mousemove","time":347,"x":475,"y":268},{"type":"mousemove","time":549,"x":483,"y":253},{"type":"mousemove","time":749,"x":484,"y":253},{"type":"screenshot","time":1185},{"type":"mousemove","time":1296,"x":478,"y":254},{"type":"mousemove","time":1501,"x":406,"y":260},{"type":"mousemove","time":1701,"x":380,"y":264},{"type":"mousemove","time":1949,"x":372,"y":266},{"type":"screenshot","time":2630},{"type":"mousemove","time":2683,"x":372,"y":267},{"type":"mousemove","time":2883,"x":368,"y":346},{"type":"mousemove","time":3100,"x":367,"y":354},{"type":"mousemove","time":3302,"x":367,"y":358},{"type":"mousemove","time":3505,"x":365,"y":451},{"type":"mousemove","time":3718,"x":366,"y":454},{"type":"mousemove","time":3934,"x":368,"y":458},{"type":"mousemove","time":4135,"x":371,"y":459},{"type":"screenshot","time":4975},{"type":"mousemove","time":5190,"x":370,"y":461},{"type":"mousemove","time":5410,"x":279,"y":480},{"type":"mousemove","time":5626,"x":268,"y":484},{"type":"screenshot","time":6502},{"type":"mousemove","time":6737,"x":273,"y":484},{"type":"mousemove","time":6940,"x":419,"y":478},{"type":"mousemove","time":7141,"x":449,"y":461},{"type":"mousemove","time":7342,"x":480,"y":458},{"type":"mousemove","time":7545,"x":487,"y":463},{"type":"mousemove","time":7754,"x":487,"y":464},{"type":"screenshot","time":8438}],"scrollY":6874,"scrollX":0,"timestamp":1568122451593},{"name":"Action 19","ops":[{"type":"mousemove","time":758,"x":207,"y":304},{"type":"mousemove","time":994,"x":160,"y":316},{"type":"screenshot","time":1886},{"type":"mousemove","time":1975,"x":163,"y":317},{"type":"mousemove","time":2184,"x":202,"y":322},{"type":"mousemove","time":2392,"x":242,"y":299},{"type":"mousemove","time":2609,"x":250,"y":288},{"type":"mousemove","time":2810,"x":250,"y":287},{"type":"screenshot","time":3541},{"type":"mousemove","time":3700,"x":248,"y":285},{"type":"mousemove","time":3906,"x":227,"y":265},{"type":"mousemove","time":4142,"x":226,"y":264},{"type":"mousemove","time":4317,"x":226,"y":264},{"type":"mousemove","time":4527,"x":225,"y":263},{"type":"screenshot","time":5029},{"type":"mousemove","time":5296,"x":230,"y":265},{"type":"mousemove","time":5496,"x":434,"y":268},{"type":"mousemove","time":5700,"x":504,"y":272},{"type":"screenshot","time":6737},{"type":"mousemove","time":6969,"x":504,"y":274},{"type":"mousemove","time":7177,"x":506,"y":280},{"type":"mousemove","time":7382,"x":507,"y":282},{"type":"mousemove","time":7601,"x":507,"y":282},{"type":"screenshot","time":8322},{"type":"mousemove","time":8854,"x":507,"y":284},{"type":"mousemove","time":9065,"x":489,"y":404},{"type":"mousemove","time":9267,"x":487,"y":429},{"type":"mousemove","time":9475,"x":489,"y":475},{"type":"mousemove","time":9677,"x":487,"y":498},{"type":"mousemove","time":9901,"x":486,"y":500},{"type":"screenshot","time":10868},{"type":"mousemove","time":11088,"x":486,"y":500},{"type":"mousemove","time":11299,"x":484,"y":500}],"scrollY":7499,"scrollX":0,"timestamp":1568044318697},{"name":"Action 20","ops":[{"type":"mousemove","time":968,"x":567,"y":508},{"type":"mousemove","time":1168,"x":432,"y":495},{"type":"screenshot","time":1944},{"type":"mousemove","time":2035,"x":436,"y":492},{"type":"mousemove","time":2236,"x":563,"y":422},{"type":"mousemove","time":2448,"x":615,"y":397},{"type":"screenshot","time":2879},{"type":"mousemove","time":3103,"x":591,"y":395},{"type":"mousemove","time":3303,"x":289,"y":373},{"type":"mousemove","time":3516,"x":242,"y":370},{"type":"screenshot","time":4013}],"scrollY":8092,"scrollX":0,"timestamp":1568044345912}] \ No newline at end of file diff --git a/test/runTest/actions/tooltip-cascade.json b/test/runTest/actions/tooltip-cascade.json new file mode 100644 index 0000000000..c0f71f3053 --- /dev/null +++ b/test/runTest/actions/tooltip-cascade.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":900,"x":233,"y":238},{"type":"mousemove","time":1101,"x":263,"y":240},{"type":"mousemove","time":1301,"x":302,"y":244},{"type":"mousemove","time":1511,"x":302,"y":244},{"type":"screenshot","time":2090},{"type":"mousemove","time":2335,"x":302,"y":241},{"type":"mousemove","time":2536,"x":304,"y":199},{"type":"mousemove","time":2736,"x":308,"y":185},{"type":"mousemove","time":2943,"x":311,"y":178},{"type":"screenshot","time":4034},{"type":"mousemove","time":4721,"x":314,"y":179},{"type":"mousemove","time":4921,"x":400,"y":204},{"type":"mousemove","time":5121,"x":482,"y":223},{"type":"mousemove","time":5321,"x":485,"y":224},{"type":"mousemove","time":5522,"x":487,"y":219},{"type":"mousemove","time":5722,"x":487,"y":215},{"type":"screenshot","time":6344},{"type":"mousemove","time":6931,"x":486,"y":216},{"type":"mousemove","time":7131,"x":469,"y":331},{"type":"mousemove","time":7331,"x":486,"y":400},{"type":"mousemove","time":7541,"x":490,"y":414},{"type":"mousemove","time":7804,"x":490,"y":415},{"type":"screenshot","time":8705},{"type":"mousemove","time":8984,"x":483,"y":414},{"type":"mousemove","time":9193,"x":385,"y":386},{"type":"mousemove","time":9410,"x":368,"y":383},{"type":"mousemove","time":10200,"x":368,"y":383},{"type":"mousemove","time":10406,"x":369,"y":384},{"type":"screenshot","time":10529}],"scrollY":0,"scrollX":0,"timestamp":1568044407382},{"name":"Action 2","ops":[{"type":"mousemove","time":453,"x":214,"y":237},{"type":"mousemove","time":654,"x":203,"y":232},{"type":"mousemove","time":856,"x":191,"y":219},{"type":"mousemove","time":1061,"x":191,"y":219},{"type":"screenshot","time":1745},{"type":"mousemove","time":2006,"x":195,"y":218},{"type":"mousemove","time":2206,"x":273,"y":216},{"type":"mousemove","time":2406,"x":373,"y":220},{"type":"mousemove","time":2618,"x":375,"y":220},{"type":"mousemove","time":2941,"x":375,"y":220},{"type":"mousemove","time":3148,"x":375,"y":220},{"type":"screenshot","time":3719},{"type":"mousemove","time":3791,"x":375,"y":224},{"type":"mousemove","time":4004,"x":372,"y":367},{"type":"mousemove","time":4208,"x":387,"y":436},{"type":"mousemove","time":4408,"x":387,"y":452},{"type":"screenshot","time":5175},{"type":"mousemove","time":5285,"x":387,"y":452},{"type":"mousemove","time":5501,"x":372,"y":462},{"type":"mousemove","time":5710,"x":370,"y":463},{"type":"mousemove","time":5925,"x":370,"y":463}],"scrollY":573,"scrollX":0,"timestamp":1568044429013},{"name":"Action 3","ops":[{"type":"mousedown","time":909,"x":377,"y":405},{"type":"mouseup","time":1030,"x":377,"y":405},{"time":1031,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1481,"x":380,"y":403},{"type":"mousemove","time":1681,"x":426,"y":358},{"type":"mousemove","time":1892,"x":427,"y":356},{"type":"mousedown","time":2110,"x":428,"y":353},{"type":"mousemove","time":2129,"x":428,"y":353},{"type":"mouseup","time":2230,"x":428,"y":353},{"time":2231,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2515,"x":428,"y":354},{"type":"mousemove","time":2716,"x":438,"y":381},{"type":"mousemove","time":2928,"x":437,"y":402},{"type":"mousedown","time":3147,"x":437,"y":402},{"type":"mousemove","time":3155,"x":437,"y":402},{"type":"mouseup","time":3242,"x":437,"y":402},{"time":3243,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3941,"x":462,"y":390}],"scrollY":927,"scrollX":0,"timestamp":1568044447404},{"name":"Action 4","ops":[{"type":"mousemove","time":397,"x":534,"y":423},{"type":"mousemove","time":598,"x":439,"y":424},{"type":"mousemove","time":805,"x":431,"y":423},{"type":"mousemove","time":1088,"x":431,"y":424},{"type":"screenshot","time":1381},{"type":"mousemove","time":1482,"x":435,"y":424},{"type":"mousemove","time":1683,"x":482,"y":412},{"type":"mousemove","time":1894,"x":492,"y":409},{"type":"mousemove","time":3033,"x":488,"y":409},{"type":"mousemove","time":3233,"x":418,"y":405},{"type":"mousemove","time":3433,"x":392,"y":402},{"type":"mousemove","time":3635,"x":377,"y":400},{"type":"mousemove","time":3847,"x":372,"y":403},{"type":"mousemove","time":4102,"x":372,"y":403},{"type":"screenshot","time":4850},{"type":"mousemove","time":4976,"x":369,"y":406},{"type":"mousemove","time":5179,"x":308,"y":432},{"type":"mousemove","time":5390,"x":303,"y":433},{"type":"screenshot","time":5954}],"scrollY":1128,"scrollX":0,"timestamp":1568044460123}] \ No newline at end of file diff --git a/test/runTest/actions/tooltip-event.json b/test/runTest/actions/tooltip-event.json new file mode 100644 index 0000000000..76f353cbff --- /dev/null +++ b/test/runTest/actions/tooltip-event.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":1228,"x":243,"y":245},{"type":"mousemove","time":1428,"x":583,"y":247},{"type":"mousemove","time":1628,"x":675,"y":244},{"type":"mousemove","time":1829,"x":696,"y":241},{"type":"mousemove","time":2036,"x":708,"y":241},{"type":"mousemove","time":2970,"x":709,"y":242},{"type":"mousemove","time":3171,"x":726,"y":314},{"type":"mousemove","time":3371,"x":721,"y":366},{"type":"mousemove","time":3578,"x":720,"y":377},{"type":"mousemove","time":4155,"x":719,"y":376},{"type":"mousemove","time":4355,"x":452,"y":259},{"type":"mousemove","time":4555,"x":209,"y":179},{"type":"mousemove","time":4755,"x":102,"y":163},{"type":"mousedown","time":4938,"x":98,"y":163},{"type":"mousemove","time":4960,"x":98,"y":163},{"type":"mouseup","time":5033,"x":98,"y":163},{"time":5034,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":5173,"x":98,"y":163},{"type":"mousemove","time":5373,"x":103,"y":166},{"type":"mousemove","time":5573,"x":499,"y":209},{"type":"mousemove","time":5773,"x":693,"y":240},{"type":"mousemove","time":5980,"x":718,"y":248},{"type":"mousemove","time":6391,"x":718,"y":247},{"type":"mousemove","time":6592,"x":724,"y":230},{"type":"mousedown","time":6751,"x":724,"y":229},{"type":"mousemove","time":6798,"x":724,"y":229},{"type":"mouseup","time":6865,"x":724,"y":229},{"time":6866,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":7125,"x":724,"y":231},{"type":"mousemove","time":7325,"x":716,"y":302},{"type":"mousemove","time":7525,"x":714,"y":373},{"type":"mousemove","time":7733,"x":714,"y":385},{"type":"mousemove","time":7992,"x":715,"y":383},{"type":"mousemove","time":8199,"x":723,"y":373},{"type":"mousedown","time":8424,"x":723,"y":373},{"type":"mouseup","time":8468,"x":723,"y":373},{"time":8469,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":8877,"x":723,"y":373},{"type":"mousemove","time":9083,"x":721,"y":375},{"type":"mousemove","time":9317,"x":721,"y":375},{"type":"mousemove","time":9360,"x":720,"y":375}],"scrollY":0,"scrollX":0,"timestamp":1568044512266}] \ No newline at end of file diff --git a/test/runTest/actions/tooltip-link.json b/test/runTest/actions/tooltip-link.json new file mode 100644 index 0000000000..a2a9c55ea7 --- /dev/null +++ b/test/runTest/actions/tooltip-link.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":377,"x":479,"y":297},{"type":"mousemove","time":581,"x":479,"y":298},{"type":"mousemove","time":893,"x":479,"y":303},{"type":"screenshot","time":1394},{"type":"mousemove","time":1962,"x":476,"y":304},{"type":"mousemove","time":2162,"x":364,"y":302},{"type":"mousemove","time":2377,"x":316,"y":302},{"type":"mousemove","time":2578,"x":315,"y":302},{"type":"screenshot","time":3469},{"type":"mousemove","time":3814,"x":315,"y":300},{"type":"mousemove","time":4026,"x":321,"y":262},{"type":"mousemove","time":4227,"x":321,"y":252},{"type":"screenshot","time":5290},{"type":"mousemove","time":5621,"x":321,"y":254},{"type":"mousemove","time":5827,"x":322,"y":410},{"type":"mousemove","time":6027,"x":326,"y":456},{"type":"screenshot","time":7066},{"type":"mousemove","time":7402,"x":332,"y":455},{"type":"mousemove","time":7602,"x":460,"y":449},{"type":"mousemove","time":7811,"x":483,"y":448}],"scrollY":0,"scrollX":0,"timestamp":1568044583515},{"name":"Action 2","ops":[{"type":"mousemove","time":317,"x":216,"y":428},{"type":"mousemove","time":517,"x":215,"y":415},{"type":"mousemove","time":731,"x":213,"y":413},{"type":"screenshot","time":1324},{"type":"mousemove","time":1767,"x":214,"y":413},{"type":"mousemove","time":1969,"x":275,"y":428},{"type":"mousemove","time":2176,"x":328,"y":448},{"type":"mousemove","time":2395,"x":331,"y":449},{"type":"screenshot","time":3168},{"type":"mousemove","time":3569,"x":330,"y":449},{"type":"mousemove","time":3770,"x":325,"y":444},{"type":"mousemove","time":3977,"x":325,"y":444},{"type":"screenshot","time":5403},{"type":"mousemove","time":5529,"x":324,"y":444},{"type":"mousemove","time":5780,"x":324,"y":444}],"scrollY":141,"scrollX":0,"timestamp":1568044616948}] \ No newline at end of file diff --git a/test/runTest/actions/tooltip-rich.json b/test/runTest/actions/tooltip-rich.json new file mode 100644 index 0000000000..5bb96a2764 --- /dev/null +++ b/test/runTest/actions/tooltip-rich.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":572,"x":378,"y":458},{"type":"mousemove","time":773,"x":267,"y":452},{"type":"screenshot","time":1652},{"type":"mousemove","time":1831,"x":268,"y":452},{"type":"mousemove","time":2031,"x":426,"y":399},{"type":"mousemove","time":2231,"x":594,"y":314},{"type":"mousemove","time":2436,"x":603,"y":309},{"type":"screenshot","time":3072}],"scrollY":0,"scrollX":0,"timestamp":1568044631848}] \ No newline at end of file diff --git a/test/runTest/actions/tooltip-setOption.json b/test/runTest/actions/tooltip-setOption.json new file mode 100644 index 0000000000..f450a68f79 --- /dev/null +++ b/test/runTest/actions/tooltip-setOption.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":592,"x":414,"y":346},{"type":"mousemove","time":797,"x":382,"y":351},{"type":"mousemove","time":1009,"x":372,"y":353},{"type":"mousemove","time":1215,"x":369,"y":353},{"type":"mousedown","time":1249,"x":369,"y":353},{"type":"mouseup","time":1383,"x":369,"y":353},{"time":1384,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2043,"x":373,"y":356},{"type":"mousemove","time":2243,"x":399,"y":373},{"type":"mousemove","time":2451,"x":419,"y":389},{"type":"mousemove","time":2702,"x":419,"y":389},{"type":"mousedown","time":3354,"x":419,"y":389},{"type":"mouseup","time":3422,"x":419,"y":389},{"time":3423,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568044692192},{"name":"Action 2","ops":[{"type":"mousedown","time":717,"x":420,"y":347},{"type":"mouseup","time":799,"x":420,"y":347},{"time":800,"delay":1000,"type":"screenshot-auto"}],"scrollY":929,"scrollX":0,"timestamp":1568122841823}] \ No newline at end of file diff --git a/test/runTest/actions/tooltip.json b/test/runTest/actions/tooltip.json new file mode 100644 index 0000000000..ac3c35bc8c --- /dev/null +++ b/test/runTest/actions/tooltip.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":1066,"x":297,"y":258},{"type":"mousemove","time":1269,"x":388,"y":256},{"type":"mousemove","time":2085,"x":392,"y":256},{"type":"mousemove","time":2287,"x":494,"y":258},{"type":"mousemove","time":2517,"x":509,"y":259},{"type":"mousemove","time":3436,"x":503,"y":284},{"type":"mousemove","time":3636,"x":491,"y":397},{"type":"mousemove","time":3837,"x":490,"y":409},{"type":"screenshot","time":4534},{"type":"mousemove","time":4578,"x":485,"y":410},{"type":"mousemove","time":4780,"x":279,"y":421},{"type":"mousemove","time":4992,"x":257,"y":421},{"type":"screenshot","time":5742}],"scrollY":0,"scrollX":0,"timestamp":1568044930472},{"name":"Action 2","ops":[{"type":"mousemove","time":1561,"x":318,"y":287},{"type":"mousemove","time":1762,"x":335,"y":287},{"type":"mousemove","time":2008,"x":321,"y":288},{"type":"mousemove","time":2161,"x":320,"y":288},{"type":"mousemove","time":2375,"x":311,"y":289},{"type":"mousemove","time":3113,"x":315,"y":289},{"type":"screenshot","time":3160},{"type":"mousemove","time":3313,"x":367,"y":283},{"type":"mousemove","time":3526,"x":371,"y":283},{"type":"screenshot","time":4530},{"type":"mousemove","time":4948,"x":371,"y":283},{"type":"mousemove","time":5148,"x":371,"y":371},{"type":"mousemove","time":5366,"x":373,"y":408},{"type":"mousemove","time":5595,"x":372,"y":444},{"type":"mousemove","time":6534,"x":376,"y":444},{"type":"mousemove","time":6743,"x":477,"y":447}],"scrollY":371,"scrollX":0,"timestamp":1568044956076},{"name":"Action 3","ops":[{"type":"mousemove","time":1063,"x":384,"y":345},{"type":"mousemove","time":1264,"x":224,"y":335},{"type":"mousemove","time":1472,"x":222,"y":335},{"type":"screenshot","time":2025}],"scrollY":901,"scrollX":0,"timestamp":1568044971045},{"name":"Action 4","ops":[{"type":"mousemove","time":547,"x":498,"y":307},{"type":"mousemove","time":747,"x":247,"y":322},{"type":"mousemove","time":955,"x":146,"y":330},{"type":"screenshot","time":1695}],"scrollY":1254,"scrollX":0,"timestamp":1568045000596},{"name":"Action 5","ops":[{"type":"mousemove","time":833,"x":479,"y":415},{"type":"mousemove","time":1041,"x":258,"y":384},{"type":"mousemove","time":1259,"x":255,"y":384},{"type":"screenshot","time":1742},{"type":"mousemove","time":2167,"x":256,"y":384},{"type":"mousemove","time":2367,"x":455,"y":402},{"type":"mousemove","time":2577,"x":514,"y":407},{"type":"screenshot","time":3243}],"scrollY":1560,"scrollX":0,"timestamp":1568045020545},{"name":"Action 6","ops":[{"type":"mousemove","time":1518,"x":561,"y":419},{"type":"mousemove","time":1718,"x":342,"y":395},{"type":"mousemove","time":1918,"x":330,"y":394},{"type":"mousemove","time":2161,"x":330,"y":394},{"type":"screenshot","time":2643},{"type":"mousemove","time":2836,"x":334,"y":393},{"type":"mousemove","time":3036,"x":427,"y":379},{"type":"mousemove","time":3236,"x":503,"y":366},{"type":"mousemove","time":3450,"x":526,"y":355},{"type":"mousemove","time":3651,"x":549,"y":346},{"type":"screenshot","time":4619},{"type":"mousemove","time":4721,"x":555,"y":344},{"type":"mousemove","time":4922,"x":636,"y":320},{"type":"mousemove","time":5122,"x":653,"y":313},{"type":"mousemove","time":5355,"x":653,"y":313},{"type":"screenshot","time":6033}],"scrollY":1949,"scrollX":0,"timestamp":1568045029877},{"name":"Action 7","ops":[{"type":"mousemove","time":84,"x":749,"y":474},{"type":"mousemove","time":285,"x":574,"y":446},{"type":"mousemove","time":500,"x":536,"y":444},{"type":"mousemove","time":709,"x":529,"y":445},{"type":"mousemove","time":916,"x":527,"y":445},{"type":"screenshot","time":1274},{"type":"screenshot","time":2870},{"type":"mousemove","time":3663,"x":518,"y":445},{"type":"mousemove","time":3863,"x":238,"y":419},{"type":"mousemove","time":4063,"x":236,"y":419},{"type":"mousemove","time":4263,"x":236,"y":420},{"type":"mousemove","time":6015,"x":230,"y":419},{"type":"mousemove","time":6215,"x":213,"y":417},{"type":"mousemove","time":6423,"x":219,"y":429},{"type":"mousemove","time":6566,"x":219,"y":429},{"type":"mousemove","time":6773,"x":200,"y":432},{"type":"mousemove","time":6982,"x":115,"y":422},{"type":"mousemove","time":7224,"x":115,"y":422},{"type":"mousemove","time":7399,"x":117,"y":422},{"type":"mousemove","time":7600,"x":395,"y":436},{"type":"mousemove","time":7808,"x":397,"y":437},{"type":"mousemove","time":8301,"x":388,"y":437},{"type":"mousemove","time":8511,"x":334,"y":434},{"type":"mousemove","time":8953,"x":335,"y":434},{"type":"mousemove","time":9162,"x":466,"y":440},{"type":"mousemove","time":9369,"x":483,"y":440},{"type":"mousemove","time":9569,"x":524,"y":440},{"type":"mousemove","time":9769,"x":496,"y":439},{"type":"mousemove","time":10169,"x":496,"y":439},{"type":"mousemove","time":10370,"x":487,"y":447},{"type":"mousemove","time":10570,"x":465,"y":475},{"type":"mousemove","time":10785,"x":465,"y":475},{"type":"mousemove","time":10979,"x":465,"y":476},{"type":"mousemove","time":11188,"x":426,"y":502},{"type":"mousemove","time":11461,"x":425,"y":502},{"type":"mousemove","time":11661,"x":392,"y":504},{"type":"mousemove","time":11870,"x":375,"y":503},{"type":"mousemove","time":12196,"x":375,"y":503},{"type":"mousemove","time":12406,"x":336,"y":503},{"type":"mousemove","time":12621,"x":332,"y":503},{"type":"mousemove","time":12880,"x":332,"y":503},{"type":"screenshot","time":14160},{"type":"mousemove","time":16617,"x":331,"y":503}],"scrollY":2512,"scrollX":0,"timestamp":1568045076317},{"name":"Action 8","ops":[{"type":"mousemove","time":309,"x":359,"y":416},{"type":"mousemove","time":509,"x":355,"y":444},{"type":"mousemove","time":716,"x":355,"y":445},{"type":"mousemove","time":2594,"x":355,"y":446},{"type":"mousemove","time":2795,"x":379,"y":478},{"type":"mousemove","time":3004,"x":399,"y":492},{"type":"mousemove","time":3220,"x":400,"y":492},{"type":"screenshot","time":4078},{"type":"mousemove","time":4353,"x":402,"y":490},{"type":"mousemove","time":4554,"x":427,"y":439},{"type":"mousemove","time":4762,"x":431,"y":423},{"type":"mousemove","time":5387,"x":431,"y":423},{"type":"screenshot","time":5579},{"type":"mousemove","time":6372,"x":431,"y":423},{"type":"mousemove","time":6572,"x":431,"y":423}],"scrollY":2989,"scrollX":0,"timestamp":1568045103543},{"name":"Action 9","ops":[{"type":"mousemove","time":514,"x":388,"y":421},{"type":"mousemove","time":714,"x":358,"y":424},{"type":"mousemove","time":914,"x":360,"y":423},{"type":"mousemove","time":1120,"x":363,"y":423},{"type":"screenshot","time":1499},{"type":"mousemove","time":1672,"x":360,"y":421},{"type":"mousemove","time":1872,"x":93,"y":272},{"type":"mousemove","time":2080,"x":91,"y":271},{"type":"screenshot","time":2915}],"scrollY":3767,"scrollX":0,"timestamp":1568045115708},{"name":"Action 10","ops":[{"type":"mousedown","time":1166,"x":366,"y":376},{"type":"mouseup","time":1285,"x":366,"y":376},{"time":1286,"delay":400,"type":"screenshot-auto"}],"scrollY":4118,"scrollX":0,"timestamp":1568045124648}] \ No newline at end of file diff --git a/test/runTest/actions/tree-image.json b/test/runTest/actions/tree-image.json new file mode 100644 index 0000000000..61f3e4b167 --- /dev/null +++ b/test/runTest/actions/tree-image.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":199,"x":347,"y":297},{"type":"mousemove","time":399,"x":349,"y":290},{"type":"mousemove","time":605,"x":350,"y":289},{"type":"mousedown","time":665,"x":350,"y":289},{"type":"mouseup","time":749,"x":350,"y":289},{"time":750,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":1490,"x":349,"y":289},{"type":"mousemove","time":1690,"x":303,"y":272},{"type":"mousemove","time":1901,"x":282,"y":249},{"type":"mousedown","time":2058,"x":272,"y":237},{"type":"mousemove","time":2108,"x":275,"y":244},{"type":"mousemove","time":2311,"x":332,"y":330},{"type":"mousemove","time":2518,"x":398,"y":400},{"type":"mouseup","time":2697,"x":400,"y":403},{"time":2698,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":2718,"x":400,"y":403},{"type":"mousemove","time":2920,"x":548,"y":368},{"type":"mousemove","time":3120,"x":779,"y":336},{"type":"mousemove","time":3320,"x":679,"y":313},{"type":"mousemove","time":3520,"x":544,"y":322},{"type":"mousemove","time":3721,"x":467,"y":320},{"type":"mousemove","time":3927,"x":467,"y":320},{"type":"mousemove","time":4002,"x":469,"y":319},{"type":"mousemove","time":4209,"x":472,"y":317},{"type":"mousedown","time":4219,"x":472,"y":317},{"type":"mouseup","time":4302,"x":472,"y":317},{"time":4303,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":4971,"x":473,"y":317},{"type":"mousemove","time":5171,"x":477,"y":317},{"type":"mousedown","time":5269,"x":477,"y":317},{"type":"mouseup","time":5380,"x":477,"y":317},{"time":5381,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":5386,"x":477,"y":317},{"type":"mousemove","time":5606,"x":477,"y":319},{"type":"mousemove","time":5805,"x":466,"y":391},{"type":"mousemove","time":6008,"x":491,"y":438},{"type":"mousemove","time":6214,"x":486,"y":493},{"type":"mousedown","time":6419,"x":478,"y":499},{"type":"mousemove","time":6439,"x":478,"y":499},{"type":"mouseup","time":6501,"x":478,"y":499},{"time":6502,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":6713,"x":478,"y":499},{"type":"mousemove","time":6950,"x":478,"y":500},{"type":"mousemove","time":7113,"x":478,"y":500},{"type":"mousemove","time":7343,"x":533,"y":485},{"type":"mousemove","time":7546,"x":566,"y":481},{"type":"mousedown","time":7572,"x":563,"y":478},{"type":"mousemove","time":7755,"x":408,"y":368},{"type":"mousemove","time":7985,"x":356,"y":327},{"type":"mousemove","time":8189,"x":356,"y":327},{"type":"mousemove","time":8422,"x":365,"y":321},{"type":"mouseup","time":8591,"x":365,"y":321},{"time":8592,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":9999,"x":375,"y":315}],"scrollY":0,"scrollX":0,"timestamp":1568045171538}] \ No newline at end of file diff --git a/test/runTest/actions/tree-legend.json b/test/runTest/actions/tree-legend.json new file mode 100644 index 0000000000..8266c0efc6 --- /dev/null +++ b/test/runTest/actions/tree-legend.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":417,"x":57,"y":23},{"type":"mouseup","time":490,"x":57,"y":23},{"time":491,"delay":600,"type":"screenshot-auto"},{"type":"mousedown","time":1518,"x":57,"y":23},{"type":"mouseup","time":1593,"x":57,"y":23},{"time":1594,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":2028,"x":58,"y":26},{"type":"mousemove","time":2228,"x":64,"y":48},{"type":"mousemove","time":2441,"x":64,"y":51},{"type":"mousemove","time":2652,"x":64,"y":52},{"type":"mousedown","time":2728,"x":64,"y":52},{"type":"mouseup","time":2810,"x":64,"y":52},{"time":2811,"delay":600,"type":"screenshot-auto"},{"type":"mousedown","time":3580,"x":64,"y":52},{"type":"mouseup","time":3655,"x":64,"y":52},{"time":3656,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":4365,"x":66,"y":54},{"type":"mousemove","time":4568,"x":118,"y":162},{"type":"mousemove","time":4766,"x":149,"y":234},{"type":"mousemove","time":4966,"x":171,"y":281},{"type":"mousemove","time":5166,"x":188,"y":311},{"type":"mousemove","time":5368,"x":188,"y":299},{"type":"mousedown","time":5574,"x":188,"y":299},{"type":"mousemove","time":5580,"x":188,"y":299},{"type":"mousemove","time":5634,"x":188,"y":299},{"type":"mouseup","time":5674,"x":188,"y":299},{"time":5675,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":5846,"x":188,"y":299},{"type":"mousemove","time":6116,"x":188,"y":302},{"type":"mousemove","time":6318,"x":187,"y":310},{"type":"mousemove","time":6519,"x":95,"y":261},{"type":"mousemove","time":6719,"x":72,"y":252},{"type":"mousemove","time":6919,"x":169,"y":257},{"type":"mousemove","time":7127,"x":174,"y":256},{"type":"mousemove","time":7328,"x":181,"y":254},{"type":"mousedown","time":7469,"x":186,"y":253},{"type":"mousemove","time":7533,"x":186,"y":253},{"type":"mouseup","time":7568,"x":186,"y":253},{"time":7569,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":7676,"x":190,"y":253},{"type":"mousemove","time":7876,"x":164,"y":248},{"type":"mousemove","time":8076,"x":153,"y":227},{"type":"mousedown","time":8224,"x":153,"y":227},{"type":"mousemove","time":8277,"x":154,"y":231},{"type":"mousemove","time":8477,"x":195,"y":260},{"type":"mousemove","time":8683,"x":208,"y":264},{"type":"mouseup","time":8718,"x":208,"y":264},{"time":8719,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":8894,"x":114,"y":253},{"type":"mousemove","time":9095,"x":72,"y":249},{"type":"mousemove","time":9295,"x":65,"y":250},{"type":"mousemove","time":9495,"x":59,"y":247},{"type":"mousemove","time":9696,"x":56,"y":245},{"type":"mousedown","time":9753,"x":56,"y":245},{"type":"mouseup","time":9853,"x":56,"y":245},{"time":9854,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":9896,"x":56,"y":245},{"type":"mousemove","time":10098,"x":56,"y":245},{"type":"mousemove","time":10439,"x":56,"y":246}],"scrollY":0,"scrollX":0,"timestamp":1568045238814}] \ No newline at end of file diff --git a/test/runTest/actions/tree-radial.json b/test/runTest/actions/tree-radial.json new file mode 100644 index 0000000000..f7db25f513 --- /dev/null +++ b/test/runTest/actions/tree-radial.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":357,"x":466,"y":333},{"type":"mouseup","time":438,"x":466,"y":333},{"time":439,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":920,"x":460,"y":338},{"type":"mousemove","time":1142,"x":454,"y":361},{"type":"mousemove","time":1343,"x":454,"y":362},{"type":"mousemove","time":1546,"x":450,"y":368},{"type":"mousemove","time":1746,"x":449,"y":368},{"type":"mousemove","time":1946,"x":445,"y":367},{"type":"mousemove","time":2171,"x":445,"y":366},{"type":"mousedown","time":2261,"x":445,"y":366},{"type":"mouseup","time":2361,"x":445,"y":366},{"time":2362,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":2487,"x":443,"y":366},{"type":"mousemove","time":2777,"x":442,"y":366},{"type":"mousemove","time":2787,"x":440,"y":364},{"type":"mousemove","time":2995,"x":410,"y":342},{"type":"mousemove","time":3197,"x":400,"y":326},{"type":"mousemove","time":3411,"x":406,"y":319},{"type":"mousemove","time":3656,"x":402,"y":315},{"type":"mousemove","time":3861,"x":400,"y":313},{"type":"mousedown","time":3896,"x":400,"y":313},{"type":"mouseup","time":4002,"x":400,"y":313},{"time":4003,"delay":600,"type":"screenshot-auto"},{"type":"mousedown","time":5214,"x":400,"y":313},{"type":"mouseup","time":5280,"x":400,"y":313},{"time":5281,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":5321,"x":400,"y":313},{"type":"mousemove","time":5549,"x":399,"y":313},{"type":"mousemove","time":5787,"x":397,"y":313}],"scrollY":0,"scrollX":0,"timestamp":1568045284639}] \ No newline at end of file diff --git a/test/runTest/actions/treemap-disk.json b/test/runTest/actions/treemap-disk.json new file mode 100644 index 0000000000..84c4ff9f9d --- /dev/null +++ b/test/runTest/actions/treemap-disk.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":71,"x":179,"y":15},{"type":"mousemove","time":272,"x":193,"y":9},{"type":"mousemove","time":478,"x":193,"y":9},{"type":"mousedown","time":529,"x":193,"y":9},{"type":"mouseup","time":626,"x":193,"y":9},{"time":627,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":889,"x":193,"y":9},{"type":"mousemove","time":1089,"x":183,"y":10},{"type":"mousemove","time":1303,"x":160,"y":11},{"type":"mousemove","time":1505,"x":153,"y":12},{"type":"mousemove","time":1705,"x":139,"y":12},{"type":"mousemove","time":1963,"x":148,"y":12},{"type":"mousedown","time":2063,"x":148,"y":12},{"type":"mousemove","time":2123,"x":148,"y":12},{"type":"mouseup","time":2165,"x":148,"y":12},{"time":2166,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":2873,"x":152,"y":13},{"type":"mousemove","time":3073,"x":389,"y":17},{"type":"mousemove","time":3275,"x":463,"y":14},{"type":"mousemove","time":3480,"x":495,"y":13},{"type":"mousemove","time":3738,"x":506,"y":10},{"type":"mousedown","time":3772,"x":506,"y":10},{"type":"mouseup","time":3912,"x":506,"y":10},{"time":3913,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":3984,"x":509,"y":11},{"type":"mousemove","time":4549,"x":509,"y":11},{"type":"mousemove","time":4749,"x":472,"y":14},{"type":"mousemove","time":4950,"x":453,"y":16},{"type":"mousemove","time":5151,"x":431,"y":16},{"type":"mousemove","time":5357,"x":417,"y":17},{"type":"mousemove","time":5573,"x":417,"y":17},{"type":"mousemove","time":5618,"x":417,"y":17},{"type":"mousemove","time":5823,"x":420,"y":16},{"type":"mousedown","time":5875,"x":420,"y":16},{"type":"mouseup","time":6008,"x":420,"y":16},{"time":6009,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":6085,"x":420,"y":16},{"type":"mousemove","time":6719,"x":420,"y":16},{"type":"mousemove","time":6925,"x":678,"y":14},{"type":"mousemove","time":7135,"x":751,"y":16},{"type":"mousemove","time":7336,"x":775,"y":12},{"type":"mousemove","time":7537,"x":778,"y":13},{"type":"mousedown","time":7743,"x":778,"y":13},{"type":"mouseup","time":7847,"x":778,"y":13},{"time":7848,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":7920,"x":780,"y":13},{"type":"mousemove","time":8120,"x":782,"y":13},{"type":"mousemove","time":8326,"x":783,"y":13},{"type":"mousedown","time":8361,"x":783,"y":13},{"type":"mouseup","time":8470,"x":783,"y":13},{"time":8471,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":9019,"x":781,"y":14},{"type":"mousemove","time":9247,"x":700,"y":23},{"type":"mousemove","time":9457,"x":596,"y":23},{"type":"mousemove","time":9663,"x":50,"y":41},{"type":"mousemove","time":9871,"x":59,"y":45},{"type":"mousemove","time":10081,"x":59,"y":44},{"type":"mousemove","time":10123,"x":60,"y":44},{"type":"mousemove","time":10330,"x":65,"y":44},{"type":"mousedown","time":10384,"x":65,"y":44},{"type":"mouseup","time":10496,"x":65,"y":44},{"time":10497,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":10544,"x":66,"y":44},{"type":"mousemove","time":10745,"x":72,"y":43}],"scrollY":0,"scrollX":0,"timestamp":1568045333631},{"name":"Action 2","ops":[{"type":"mousemove","time":390,"x":474,"y":257},{"type":"mousemove","time":598,"x":471,"y":257},{"type":"mousedown","time":813,"x":471,"y":257},{"type":"mouseup","time":898,"x":471,"y":257},{"time":899,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":1909,"x":470,"y":257},{"type":"mousemove","time":2109,"x":436,"y":322},{"type":"mousemove","time":2310,"x":387,"y":546},{"type":"mousemove","time":2516,"x":336,"y":560},{"type":"mousemove","time":2716,"x":291,"y":584},{"type":"mousedown","time":2790,"x":281,"y":588},{"type":"mouseup","time":2908,"x":281,"y":588},{"time":2909,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":2942,"x":281,"y":588},{"type":"mousemove","time":3144,"x":280,"y":588},{"type":"mousemove","time":3468,"x":281,"y":587},{"type":"mousemove","time":3681,"x":310,"y":489},{"type":"mousemove","time":3884,"x":403,"y":365},{"type":"mousemove","time":4084,"x":468,"y":339},{"type":"mousemove","time":4285,"x":478,"y":346},{"type":"mousemove","time":4492,"x":471,"y":357},{"type":"mousedown","time":4508,"x":471,"y":357},{"type":"mouseup","time":4577,"x":471,"y":358},{"time":4578,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":4736,"x":471,"y":358},{"type":"mousemove","time":5253,"x":471,"y":358},{"type":"mousemove","time":5460,"x":289,"y":568},{"type":"mousemove","time":5666,"x":275,"y":587},{"type":"mousemove","time":5870,"x":273,"y":589},{"type":"mousedown","time":6033,"x":271,"y":583},{"type":"mousemove","time":6070,"x":271,"y":583},{"type":"mouseup","time":6145,"x":271,"y":583},{"time":6146,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":6771,"x":272,"y":583},{"type":"mousemove","time":6978,"x":342,"y":517},{"type":"mousemove","time":7180,"x":437,"y":480},{"type":"mousemove","time":7390,"x":464,"y":442},{"type":"mousemove","time":7597,"x":468,"y":413},{"type":"mousemove","time":7807,"x":483,"y":398},{"type":"mousemove","time":8012,"x":491,"y":400},{"type":"mousemove","time":8229,"x":500,"y":403},{"type":"mousedown","time":8306,"x":500,"y":403},{"type":"mousemove","time":8339,"x":500,"y":403},{"type":"mouseup","time":8430,"x":500,"y":403},{"time":8431,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":9158,"x":498,"y":404},{"type":"mousemove","time":9365,"x":319,"y":565},{"type":"mousemove","time":9565,"x":315,"y":577},{"type":"mousemove","time":9773,"x":315,"y":584},{"type":"mousemove","time":9976,"x":307,"y":585},{"type":"mousedown","time":10033,"x":306,"y":586},{"type":"mouseup","time":10099,"x":306,"y":586},{"time":10100,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":10204,"x":306,"y":586},{"type":"mousemove","time":10392,"x":306,"y":586},{"type":"mousemove","time":10958,"x":306,"y":585},{"type":"mousemove","time":11159,"x":393,"y":464},{"type":"mousemove","time":11360,"x":522,"y":224},{"type":"mousemove","time":11560,"x":594,"y":119},{"type":"mousemove","time":11761,"x":694,"y":35},{"type":"mousemove","time":11967,"x":702,"y":10},{"type":"mousemove","time":12202,"x":703,"y":9},{"type":"mousemove","time":12210,"x":703,"y":9},{"type":"mousemove","time":12411,"x":705,"y":13},{"type":"mousedown","time":12440,"x":705,"y":13},{"type":"mouseup","time":12544,"x":705,"y":13},{"time":12545,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":13511,"x":704,"y":20},{"type":"mousemove","time":13712,"x":607,"y":177},{"type":"mousemove","time":13920,"x":521,"y":248},{"type":"mousemove","time":14127,"x":506,"y":252},{"type":"mousemove","time":14338,"x":485,"y":238},{"type":"mousemove","time":14545,"x":473,"y":232},{"type":"mousedown","time":14560,"x":473,"y":232},{"type":"mouseup","time":14661,"x":473,"y":232},{"time":14662,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":15638,"x":473,"y":233},{"type":"mousemove","time":15846,"x":438,"y":347},{"type":"mousemove","time":16055,"x":415,"y":398},{"type":"mousemove","time":16272,"x":390,"y":593},{"type":"mousemove","time":16622,"x":394,"y":599},{"type":"mousemove","time":16822,"x":394,"y":592},{"type":"mousedown","time":16982,"x":363,"y":592},{"type":"mousemove","time":17029,"x":363,"y":592},{"type":"mouseup","time":17080,"x":363,"y":592},{"time":17081,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":17189,"x":362,"y":592},{"type":"mousemove","time":17772,"x":363,"y":591},{"type":"mousemove","time":17972,"x":417,"y":560},{"type":"mousemove","time":18174,"x":509,"y":508},{"type":"mousemove","time":18374,"x":578,"y":500},{"type":"mousemove","time":18574,"x":603,"y":481},{"type":"mousemove","time":18775,"x":604,"y":477},{"type":"mousedown","time":18864,"x":603,"y":476},{"type":"mouseup","time":18927,"x":603,"y":476},{"time":18928,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":19036,"x":603,"y":476},{"type":"mousemove","time":19840,"x":602,"y":476},{"type":"mousemove","time":20041,"x":475,"y":551},{"type":"mousemove","time":20243,"x":378,"y":577},{"type":"mousedown","time":20441,"x":354,"y":581},{"type":"mousemove","time":20448,"x":354,"y":581},{"type":"mouseup","time":20533,"x":354,"y":581},{"time":20534,"delay":1000,"type":"screenshot-auto"},{"type":"mousemove","time":20659,"x":354,"y":581},{"type":"mousemove","time":20859,"x":353,"y":582},{"type":"mousemove","time":22176,"x":354,"y":581},{"type":"mousemove","time":22377,"x":356,"y":579}],"scrollY":0,"scrollX":0,"timestamp":1568045354931},{"name":"Action 3","ops":[{"type":"mousewheel","time":379,"x":412,"y":314,"deltaY":4.000244140625},{"type":"mousewheel","time":496,"x":412,"y":314,"deltaY":374.713134765625},{"type":"mousewheel","time":596,"x":412,"y":314,"deltaY":474.54833984375},{"type":"mousewheel","time":696,"x":412,"y":314,"deltaY":250.5975341796875},{"type":"mousemove","time":1346,"x":412,"y":314},{"type":"mousemove","time":1546,"x":576,"y":311},{"type":"mousedown","time":1639,"x":578,"y":310},{"type":"mousemove","time":1786,"x":485,"y":354},{"type":"mousemove","time":2038,"x":244,"y":408},{"type":"mousemove","time":2248,"x":244,"y":409},{"type":"mouseup","time":2341,"x":244,"y":409},{"time":2342,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2448,"x":253,"y":405},{"type":"mousemove","time":2649,"x":677,"y":277},{"type":"mousemove","time":2849,"x":615,"y":143},{"type":"mousedown","time":2911,"x":615,"y":143},{"type":"mousemove","time":3064,"x":596,"y":234},{"type":"mousemove","time":3280,"x":590,"y":571},{"type":"mousemove","time":3482,"x":590,"y":573},{"type":"mousemove","time":3550,"x":590,"y":573},{"type":"mouseup","time":3714,"x":590,"y":570},{"time":3715,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3750,"x":591,"y":567},{"type":"mousemove","time":3958,"x":593,"y":549},{"type":"mousemove","time":4166,"x":539,"y":472},{"type":"mousemove","time":4366,"x":525,"y":452},{"type":"mousewheel","time":4467,"x":524,"y":449,"deltaY":-4.000244140625},{"type":"mousewheel","time":4528,"x":524,"y":449,"deltaY":-426.1700439453125},{"type":"mousewheel","time":4575,"x":524,"y":449,"deltaY":-535.5987548828125},{"type":"mousemove","time":4617,"x":524,"y":449},{"type":"mousemove","time":4823,"x":522,"y":447},{"type":"mousewheel","time":5036,"x":522,"y":447,"deltaY":-4.000244140625},{"type":"mousewheel","time":5079,"x":522,"y":447,"deltaY":-37.396240234375},{"type":"mousewheel","time":5121,"x":522,"y":447,"deltaY":-388.7353515625},{"type":"mousewheel","time":5159,"x":522,"y":447,"deltaY":-248.73046875},{"type":"mousemove","time":5486,"x":521,"y":450},{"type":"mousemove","time":5692,"x":502,"y":492},{"type":"mousedown","time":5877,"x":510,"y":457},{"type":"mousemove","time":5922,"x":512,"y":441},{"type":"mousemove","time":6134,"x":533,"y":326},{"type":"mousemove","time":6341,"x":535,"y":285},{"type":"mouseup","time":6680,"x":535,"y":285},{"time":6681,"delay":400,"type":"screenshot-auto"},{"type":"mousewheel","time":6920,"x":535,"y":285,"deltaY":-4.000244140625},{"type":"mousewheel","time":6955,"x":535,"y":285,"deltaY":-40.396728515625},{"type":"mousewheel","time":6987,"x":535,"y":285,"deltaY":-385.169677734375},{"type":"mousewheel","time":7018,"x":535,"y":285,"deltaY":-245.4705810546875},{"type":"mousedown","time":7863,"x":535,"y":285},{"type":"mousemove","time":7953,"x":534,"y":286},{"type":"mousemove","time":8154,"x":468,"y":334},{"type":"mousemove","time":8362,"x":460,"y":344},{"type":"mouseup","time":8449,"x":460,"y":344},{"time":8450,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568969886390}] \ No newline at end of file diff --git a/test/runTest/actions/treemap-disk2.json b/test/runTest/actions/treemap-disk2.json new file mode 100644 index 0000000000..b1954f2c1b --- /dev/null +++ b/test/runTest/actions/treemap-disk2.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":783,"x":451,"y":369},{"type":"mousemove","time":983,"x":460,"y":399},{"type":"mousemove","time":1190,"x":482,"y":413},{"type":"screenshot","time":2593},{"type":"mousemove","time":2820,"x":481,"y":411},{"type":"mousemove","time":3029,"x":448,"y":369},{"type":"mousemove","time":3244,"x":441,"y":362},{"type":"mousemove","time":3554,"x":441,"y":362},{"type":"screenshot","time":4426},{"type":"mousemove","time":4571,"x":439,"y":361},{"type":"mousemove","time":4771,"x":403,"y":348},{"type":"mousemove","time":4978,"x":381,"y":345},{"type":"mousemove","time":5185,"x":377,"y":344},{"type":"mousemove","time":6345,"x":377,"y":344},{"type":"mousemove","time":6546,"x":368,"y":194},{"type":"mousemove","time":6747,"x":357,"y":149},{"type":"mousemove","time":6953,"x":354,"y":124},{"type":"mousemove","time":7187,"x":349,"y":96},{"type":"mousemove","time":8048,"x":349,"y":98},{"type":"mousemove","time":8248,"x":342,"y":120},{"type":"mousemove","time":8449,"x":340,"y":131},{"type":"mousemove","time":8655,"x":340,"y":132},{"type":"mousemove","time":8715,"x":340,"y":132},{"type":"screenshot","time":10033},{"type":"mousemove","time":10717,"x":340,"y":133},{"type":"mousemove","time":10917,"x":340,"y":153},{"type":"mousemove","time":11118,"x":339,"y":184},{"type":"mousedown","time":11267,"x":339,"y":184},{"type":"mousemove","time":11325,"x":339,"y":184},{"type":"mouseup","time":11359,"x":339,"y":184},{"time":11360,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":13286,"x":342,"y":186},{"type":"mousemove","time":13487,"x":510,"y":245},{"type":"mousemove","time":13687,"x":638,"y":306},{"type":"mousemove","time":13896,"x":644,"y":312},{"type":"mousedown","time":14364,"x":644,"y":312},{"type":"mouseup","time":14496,"x":644,"y":312},{"time":14497,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":15831,"x":645,"y":314},{"type":"mousemove","time":16031,"x":645,"y":328},{"type":"mousemove","time":16236,"x":646,"y":335},{"type":"mousemove","time":16548,"x":646,"y":335},{"type":"mousemove","time":16754,"x":646,"y":336},{"type":"mousemove","time":16814,"x":646,"y":336},{"type":"mousemove","time":17015,"x":564,"y":449},{"type":"mousemove","time":17215,"x":425,"y":544},{"type":"mousemove","time":17421,"x":347,"y":566},{"type":"mousemove","time":17632,"x":279,"y":589},{"type":"mousedown","time":17711,"x":279,"y":589},{"type":"mouseup","time":17807,"x":279,"y":590},{"time":17808,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":17865,"x":279,"y":590},{"type":"mousemove","time":18097,"x":278,"y":591},{"type":"mousemove","time":18327,"x":278,"y":591},{"type":"mousemove","time":18434,"x":278,"y":592},{"type":"mousemove","time":18636,"x":277,"y":593},{"type":"mousemove","time":18837,"x":277,"y":594},{"type":"mousemove","time":19057,"x":277,"y":594},{"type":"mousemove","time":19292,"x":277,"y":596},{"type":"mousemove","time":19534,"x":281,"y":596},{"type":"mousemove","time":19734,"x":391,"y":544},{"type":"mousemove","time":19934,"x":507,"y":505},{"type":"mousemove","time":20135,"x":571,"y":461},{"type":"mousemove","time":20343,"x":572,"y":461},{"type":"screenshot","time":21692}],"scrollY":0,"scrollX":0,"timestamp":1568045404523},{"name":"Action 2","ops":[{"type":"mousewheel","time":282,"x":389,"y":313,"deltaY":4.000244140625},{"type":"mousewheel","time":415,"x":389,"y":313,"deltaY":1274.4915771484375},{"type":"mousewheel","time":498,"x":389,"y":313,"deltaY":323.3740234375},{"type":"mousewheel","time":883,"x":389,"y":313,"deltaY":4.000244140625},{"type":"mousewheel","time":966,"x":389,"y":313,"deltaY":28.831787109375},{"type":"mousewheel","time":1033,"x":389,"y":313,"deltaY":825.3546142578125},{"type":"mousewheel","time":1099,"x":389,"y":313,"deltaY":285.667724609375},{"type":"mousewheel","time":1183,"x":389,"y":313,"deltaY":265.6805419921875},{"type":"mousemove","time":1599,"x":390,"y":313},{"type":"mousedown","time":1743,"x":429,"y":305},{"type":"mousemove","time":1800,"x":426,"y":301},{"type":"mousemove","time":2017,"x":273,"y":158},{"type":"mousemove","time":2223,"x":140,"y":49},{"type":"mouseup","time":2245,"x":140,"y":49},{"time":2246,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2433,"x":393,"y":303},{"type":"mousemove","time":2642,"x":443,"y":388},{"type":"mousewheel","time":2734,"x":443,"y":387,"deltaY":4.000244140625},{"type":"mousewheel","time":2776,"x":443,"y":387,"deltaY":210.087890625},{"type":"mousewheel","time":2821,"x":443,"y":387,"deltaY":788.75244140625},{"type":"mousemove","time":2879,"x":443,"y":387},{"type":"mousemove","time":3017,"x":445,"y":389},{"type":"mousemove","time":3218,"x":496,"y":381},{"type":"mousedown","time":3277,"x":498,"y":379},{"type":"mousemove","time":3434,"x":448,"y":353},{"type":"mousemove","time":3655,"x":139,"y":194},{"type":"mouseup","time":3844,"x":139,"y":194},{"time":3845,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3858,"x":139,"y":194},{"type":"mousemove","time":3920,"x":140,"y":195},{"type":"mousemove","time":4129,"x":398,"y":320},{"type":"mousemove","time":4343,"x":472,"y":366},{"type":"mousewheel","time":4470,"x":472,"y":366,"deltaY":4.000244140625},{"type":"mousewheel","time":4519,"x":472,"y":366,"deltaY":194.4476318359375},{"type":"mousewheel","time":4563,"x":472,"y":366,"deltaY":215.1177978515625},{"type":"mousemove","time":4752,"x":482,"y":372},{"type":"mousemove","time":4954,"x":529,"y":394},{"type":"mousedown","time":5149,"x":532,"y":394},{"type":"mousemove","time":5166,"x":532,"y":394},{"type":"mousemove","time":5385,"x":417,"y":302},{"type":"mousemove","time":5588,"x":367,"y":258},{"type":"mousemove","time":5795,"x":350,"y":238},{"type":"mouseup","time":5963,"x":347,"y":236},{"time":5964,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6001,"x":347,"y":236},{"type":"mousemove","time":6271,"x":347,"y":236},{"type":"mousewheel","time":6288,"x":347,"y":236,"deltaY":-4.000244140625},{"type":"mousewheel","time":6337,"x":347,"y":236,"deltaY":-432.744140625},{"type":"mousewheel","time":6383,"x":347,"y":236,"deltaY":-548.4722900390625},{"type":"mousewheel","time":6430,"x":347,"y":236,"deltaY":-305.631103515625},{"type":"mousewheel","time":6855,"x":347,"y":236,"deltaY":-4.000244140625},{"type":"mousewheel","time":6918,"x":347,"y":236,"deltaY":-173.311767578125},{"type":"mousewheel","time":6973,"x":347,"y":236,"deltaY":-208.1536865234375},{"type":"mousewheel","time":7122,"x":347,"y":236,"deltaY":-4.000244140625},{"type":"mousewheel","time":7206,"x":347,"y":236,"deltaY":-13.6578369140625},{"type":"mousewheel","time":7255,"x":347,"y":236,"deltaY":-82.4737548828125},{"type":"mousewheel","time":7313,"x":347,"y":236,"deltaY":-155.1434326171875},{"type":"mousewheel","time":7368,"x":347,"y":236,"deltaY":-176.4447021484375},{"type":"mousewheel","time":8040,"x":347,"y":236,"deltaY":-4.000244140625},{"type":"mousewheel","time":8098,"x":347,"y":236,"deltaY":-213.1671142578125},{"type":"mousewheel","time":8144,"x":347,"y":236,"deltaY":-485.894775390625},{"type":"mousemove","time":8973,"x":349,"y":240},{"type":"mousemove","time":9174,"x":394,"y":410},{"type":"mousemove","time":9380,"x":392,"y":391},{"type":"mousemove","time":9583,"x":397,"y":347},{"type":"mousedown","time":9650,"x":397,"y":346},{"type":"mousemove","time":9787,"x":431,"y":413},{"type":"mousemove","time":9987,"x":462,"y":465},{"type":"mousemove","time":10191,"x":492,"y":496},{"type":"mousemove","time":10398,"x":505,"y":506},{"type":"mouseup","time":10532,"x":505,"y":506},{"time":10533,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":10716,"x":505,"y":506},{"type":"mousemove","time":10876,"x":505,"y":506},{"type":"mousemove","time":11083,"x":504,"y":505}],"scrollY":0,"scrollX":0,"timestamp":1568969921384}] \ No newline at end of file diff --git a/test/runTest/actions/treemap-obama.json b/test/runTest/actions/treemap-obama.json new file mode 100644 index 0000000000..f44f08315b --- /dev/null +++ b/test/runTest/actions/treemap-obama.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousemove","time":214,"x":127,"y":31},{"type":"mousemove","time":414,"x":93,"y":31},{"type":"mousemove","time":621,"x":83,"y":29},{"type":"mousedown","time":756,"x":83,"y":29},{"type":"mouseup","time":846,"x":83,"y":29},{"time":847,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":1665,"x":84,"y":32},{"type":"mousemove","time":1867,"x":88,"y":58},{"type":"mousemove","time":2067,"x":87,"y":69},{"type":"mousedown","time":2207,"x":86,"y":71},{"type":"mousemove","time":2273,"x":86,"y":71},{"type":"mouseup","time":2291,"x":86,"y":71},{"time":2292,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":2516,"x":83,"y":72},{"type":"mousedown","time":2691,"x":82,"y":73},{"type":"mousemove","time":2716,"x":82,"y":73},{"type":"mouseup","time":2775,"x":82,"y":73},{"time":2776,"delay":600,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568045434026},{"name":"Action 2","ops":[{"type":"mousewheel","time":252,"x":453,"y":371,"deltaY":4.000244140625},{"type":"mousewheel","time":352,"x":453,"y":371,"deltaY":411.376953125},{"type":"mousewheel","time":453,"x":453,"y":371,"deltaY":516.8878173828125},{"type":"mousemove","time":602,"x":453,"y":371},{"type":"mousemove","time":803,"x":454,"y":373},{"type":"mousedown","time":1029,"x":494,"y":371},{"type":"mousemove","time":1059,"x":494,"y":371},{"type":"mousemove","time":1270,"x":408,"y":326},{"type":"mousemove","time":1513,"x":225,"y":259},{"type":"mouseup","time":1703,"x":219,"y":258},{"time":1704,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":1718,"x":220,"y":259},{"type":"mousemove","time":1924,"x":582,"y":454},{"type":"mousewheel","time":2122,"x":592,"y":458,"deltaY":4.000244140625},{"type":"mousewheel","time":2171,"x":592,"y":458,"deltaY":37.423095703125},{"type":"mousewheel","time":2222,"x":592,"y":458,"deltaY":618.3270263671875},{"type":"mousemove","time":2266,"x":592,"y":458},{"type":"mousewheel","time":2276,"x":592,"y":458,"deltaY":571.3848876953125},{"type":"mousewheel","time":2671,"x":592,"y":458,"deltaY":4.000244140625},{"type":"mousemove","time":2710,"x":592,"y":458},{"type":"mousewheel","time":2720,"x":592,"y":458,"deltaY":40.4705810546875},{"type":"mousewheel","time":2754,"x":592,"y":459,"deltaY":361.9256591796875},{"type":"mousewheel","time":2782,"x":592,"y":459,"deltaY":239.1265869140625},{"type":"mousemove","time":2913,"x":591,"y":459},{"type":"mousemove","time":3106,"x":591,"y":459},{"type":"mousemove","time":3455,"x":592,"y":459},{"type":"mousedown","time":3600,"x":592,"y":459},{"type":"mousemove","time":3661,"x":592,"y":459},{"type":"mousemove","time":3873,"x":501,"y":437},{"type":"mousemove","time":4079,"x":475,"y":427},{"type":"mouseup","time":4165,"x":475,"y":427},{"time":4166,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4356,"x":475,"y":427},{"type":"mousewheel","time":4473,"x":475,"y":428,"deltaY":4.000244140625},{"type":"mousewheel","time":4502,"x":475,"y":428,"deltaY":37.437744140625},{"type":"mousewheel","time":4531,"x":475,"y":428,"deltaY":146.5631103515625},{"type":"mousewheel","time":4558,"x":475,"y":428,"deltaY":215.2154541015625},{"type":"mousewheel","time":4591,"x":475,"y":428,"deltaY":232.77587890625},{"type":"mousemove","time":4629,"x":475,"y":428},{"type":"mousewheel","time":4690,"x":475,"y":428,"deltaY":230.6085205078125},{"type":"mousemove","time":4859,"x":479,"y":418},{"type":"mousemove","time":5061,"x":537,"y":282},{"type":"mousemove","time":5267,"x":543,"y":223},{"type":"mousedown","time":5342,"x":543,"y":208},{"type":"mousemove","time":5474,"x":545,"y":301},{"type":"mousemove","time":5675,"x":540,"y":523},{"type":"mousemove","time":5876,"x":533,"y":589},{"type":"mousemove","time":6083,"x":531,"y":598},{"type":"mouseup","time":6124,"x":531,"y":598},{"time":6125,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6242,"x":532,"y":597},{"type":"mousemove","time":6444,"x":536,"y":581},{"type":"mousemove","time":6649,"x":544,"y":507},{"type":"mousemove","time":6866,"x":546,"y":486},{"type":"mousewheel","time":7009,"x":546,"y":484,"deltaY":-4.000244140625},{"type":"mousewheel","time":7076,"x":546,"y":484,"deltaY":-16.0150146484375},{"type":"mousemove","time":7104,"x":546,"y":484},{"type":"mousewheel","time":7376,"x":546,"y":484,"deltaY":-4.000244140625},{"type":"mousemove","time":8111,"x":549,"y":484},{"type":"mousedown","time":8289,"x":551,"y":484},{"type":"mousemove","time":8317,"x":551,"y":484},{"type":"mousemove","time":8461,"x":548,"y":482},{"type":"mousemove","time":8682,"x":305,"y":378},{"type":"mousemove","time":8884,"x":259,"y":361},{"type":"mouseup","time":9009,"x":257,"y":361},{"time":9010,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":9151,"x":257,"y":361},{"type":"mousewheel","time":10045,"x":257,"y":361,"deltaY":4.000244140625},{"type":"mousewheel","time":10078,"x":257,"y":361,"deltaY":202.2125244140625},{"type":"mousewheel","time":10128,"x":257,"y":361,"deltaY":226.9384765625},{"type":"mousewheel","time":10161,"x":257,"y":361,"deltaY":532.5341796875},{"type":"mousemove","time":10579,"x":258,"y":361},{"type":"mousemove","time":10779,"x":402,"y":274},{"type":"mousemove","time":10981,"x":454,"y":215},{"type":"mousedown","time":11057,"x":454,"y":215},{"type":"mousemove","time":11190,"x":446,"y":269},{"type":"mousemove","time":11405,"x":446,"y":440},{"type":"mousemove","time":11605,"x":453,"y":470},{"type":"mouseup","time":11909,"x":453,"y":470},{"time":11910,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568969959112}] \ No newline at end of file diff --git a/test/runTest/actions/treemap-option.json b/test/runTest/actions/treemap-option.json new file mode 100644 index 0000000000..1e9b469438 --- /dev/null +++ b/test/runTest/actions/treemap-option.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":362,"x":261,"y":394},{"type":"mouseup","time":414,"x":261,"y":394},{"time":415,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":1255,"x":262,"y":394},{"type":"mousemove","time":1461,"x":280,"y":397},{"type":"mousedown","time":1547,"x":280,"y":397},{"type":"mouseup","time":1644,"x":280,"y":397},{"time":1645,"delay":600,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568045450618}] \ No newline at end of file diff --git a/test/runTest/actions/treemap-option2.json b/test/runTest/actions/treemap-option2.json new file mode 100644 index 0000000000..75b1a53567 --- /dev/null +++ b/test/runTest/actions/treemap-option2.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":272,"x":319,"y":302},{"type":"mouseup","time":377,"x":319,"y":302},{"time":378,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":1252,"x":319,"y":303},{"type":"mousemove","time":1453,"x":320,"y":305},{"type":"mousemove","time":1662,"x":383,"y":319},{"type":"mousedown","time":1750,"x":383,"y":319},{"type":"mouseup","time":1847,"x":383,"y":319},{"time":1848,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":2873,"x":382,"y":320},{"type":"mousemove","time":3072,"x":365,"y":441},{"type":"mousemove","time":3272,"x":314,"y":559},{"type":"mousemove","time":3472,"x":229,"y":576},{"type":"mousemove","time":3672,"x":219,"y":589},{"type":"mousedown","time":3863,"x":250,"y":587},{"type":"mousemove","time":3879,"x":250,"y":587},{"type":"mouseup","time":3956,"x":250,"y":587},{"time":3957,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":5475,"x":249,"y":587}],"scrollY":0,"scrollX":0,"timestamp":1568045458718},{"name":"Action 2","ops":[{"type":"mousewheel","time":304,"x":472,"y":298,"deltaY":4.000244140625},{"type":"mousewheel","time":387,"x":472,"y":298,"deltaY":183.9971923828125},{"type":"mousewheel","time":470,"x":472,"y":298,"deltaY":725.625},{"type":"mousewheel","time":554,"x":472,"y":298,"deltaY":291.343994140625},{"type":"mousewheel","time":1471,"x":472,"y":298,"deltaY":4.000244140625},{"type":"mousewheel","time":1520,"x":472,"y":298,"deltaY":199.2791748046875},{"type":"mousewheel","time":1571,"x":472,"y":298,"deltaY":772.1307373046875},{"type":"mousewheel","time":1622,"x":472,"y":298,"deltaY":308.5687255859375},{"type":"mousewheel","time":1650,"x":472,"y":298,"deltaY":312.498779296875},{"type":"mousedown","time":2283,"x":472,"y":298},{"type":"mousemove","time":2373,"x":480,"y":290},{"type":"mousemove","time":2574,"x":631,"y":125},{"type":"mousemove","time":2778,"x":643,"y":108},{"type":"mouseup","time":2922,"x":643,"y":108},{"time":2923,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":3057,"x":641,"y":111},{"type":"mousemove","time":3257,"x":561,"y":216},{"type":"mousemove","time":3457,"x":530,"y":387},{"type":"mousemove","time":3657,"x":510,"y":495},{"type":"mousedown","time":3813,"x":510,"y":495},{"type":"mousemove","time":3864,"x":510,"y":495},{"type":"mousemove","time":3875,"x":508,"y":493},{"type":"mousemove","time":4076,"x":262,"y":333},{"type":"mousemove","time":4281,"x":233,"y":317},{"type":"mouseup","time":4413,"x":233,"y":317},{"time":4414,"delay":400,"type":"screenshot-auto"},{"type":"mousewheel","time":4758,"x":233,"y":317,"deltaY":4.000244140625},{"type":"mousewheel","time":4785,"x":233,"y":317,"deltaY":34.4732666015625},{"type":"mousewheel","time":4811,"x":233,"y":317,"deltaY":146.4422607421875},{"type":"mousewheel","time":4908,"x":233,"y":317,"deltaY":136.4813232421875},{"type":"mousewheel","time":4944,"x":233,"y":317,"deltaY":193.6126708984375},{"type":"mousewheel","time":5025,"x":233,"y":317,"deltaY":206.290283203125},{"type":"mousemove","time":5608,"x":232,"y":318},{"type":"mousemove","time":5814,"x":231,"y":318},{"type":"mousemove","time":6560,"x":233,"y":322},{"type":"mousedown","time":6693,"x":237,"y":330},{"type":"mousemove","time":6761,"x":242,"y":326},{"type":"mousemove","time":6963,"x":337,"y":252},{"type":"mouseup","time":7368,"x":337,"y":252},{"time":7369,"delay":400,"type":"screenshot-auto"},{"type":"mousewheel","time":7928,"x":337,"y":252,"deltaY":-4.000244140625},{"type":"mousewheel","time":7961,"x":337,"y":252,"deltaY":-459.1357421875},{"type":"mousewheel","time":7995,"x":337,"y":252,"deltaY":-891.3360595703125},{"type":"mousewheel","time":8029,"x":337,"y":252,"deltaY":-341.339111328125},{"type":"mousewheel","time":8061,"x":337,"y":252,"deltaY":-369.1357421875},{"type":"mousewheel","time":8111,"x":337,"y":252,"deltaY":-353.258056640625},{"type":"mousewheel","time":8545,"x":337,"y":252,"deltaY":-4.000244140625},{"type":"mousewheel","time":8628,"x":337,"y":252,"deltaY":-13.6444091796875},{"type":"mousewheel","time":8661,"x":337,"y":252,"deltaY":-270.30517578125},{"type":"mousewheel","time":8694,"x":337,"y":252,"deltaY":-494.7900390625},{"type":"mousewheel","time":8738,"x":337,"y":252,"deltaY":-592.7960205078125},{"type":"mousewheel","time":9379,"x":337,"y":252,"deltaY":-4.000244140625},{"type":"mousewheel","time":9446,"x":337,"y":252,"deltaY":-202.265625},{"type":"mousewheel","time":9512,"x":337,"y":252,"deltaY":-1087.1417236328125},{"type":"mousewheel","time":9557,"x":337,"y":252,"deltaY":-320.59814453125},{"type":"mousemove","time":10078,"x":347,"y":244},{"type":"mousedown","time":10177,"x":347,"y":244},{"type":"mousemove","time":10278,"x":400,"y":296},{"type":"mousemove","time":10494,"x":508,"y":357},{"type":"mouseup","time":10623,"x":508,"y":358},{"time":10624,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":10738,"x":508,"y":358}],"scrollY":0,"scrollX":0,"timestamp":1568970003915}] \ No newline at end of file diff --git a/test/runTest/actions/update.js b/test/runTest/actions/update.js new file mode 100644 index 0000000000..3a65ed4bc3 --- /dev/null +++ b/test/runTest/actions/update.js @@ -0,0 +1,14 @@ +const glob = require('glob'); +const fs = require('fs'); + +const result = {}; +glob('*.json', (err, files) => { + files.forEach(file => { + if (file.match('__meta__')) { + return; + } + const actions = JSON.parse(fs.readFileSync(file, 'utf-8')); + result[file.replace(/.json$/, '')] = actions.length; + }); + fs.writeFileSync('__meta__.json', JSON.stringify(result, null, 2), 'utf-8'); +}); \ No newline at end of file diff --git a/test/runTest/actions/visualMap-categories.json b/test/runTest/actions/visualMap-categories.json new file mode 100644 index 0000000000..f10e9d506f --- /dev/null +++ b/test/runTest/actions/visualMap-categories.json @@ -0,0 +1 @@ +[{"name":"Action 1","ops":[{"type":"mousedown","time":542,"x":780,"y":466},{"type":"mouseup","time":636,"x":780,"y":466},{"time":637,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":879,"x":780,"y":470},{"type":"mousemove","time":1079,"x":780,"y":496},{"type":"mousemove","time":1310,"x":780,"y":496},{"type":"mousemove","time":1462,"x":781,"y":496},{"type":"mousemove","time":1662,"x":785,"y":494},{"type":"mousedown","time":1844,"x":785,"y":493},{"type":"mousemove","time":1897,"x":785,"y":493},{"type":"mouseup","time":1929,"x":785,"y":493},{"time":1930,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":1964,"x":785,"y":493},{"type":"mousemove","time":2183,"x":784,"y":507},{"type":"mousemove","time":2395,"x":784,"y":514},{"type":"mousedown","time":2562,"x":784,"y":514},{"type":"mouseup","time":2651,"x":784,"y":514},{"time":2652,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":2747,"x":784,"y":514},{"type":"mousemove","time":2950,"x":784,"y":531},{"type":"mousemove","time":3163,"x":785,"y":537},{"type":"mousemove","time":3382,"x":785,"y":538},{"type":"mousemove","time":4306,"x":785,"y":541},{"type":"mousemove","time":4506,"x":774,"y":580},{"type":"mousemove","time":4712,"x":777,"y":583},{"type":"mousemove","time":4921,"x":782,"y":585},{"type":"mousedown","time":4988,"x":782,"y":585},{"type":"mouseup","time":5028,"x":782,"y":585},{"time":5029,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":5160,"x":785,"y":583},{"type":"mousemove","time":5369,"x":791,"y":570},{"type":"mousemove","time":5577,"x":791,"y":569},{"type":"mousemove","time":5777,"x":788,"y":566},{"type":"mousedown","time":5844,"x":788,"y":566},{"type":"mouseup","time":5936,"x":788,"y":566},{"time":5937,"delay":600,"type":"screenshot-auto"},{"type":"mousemove","time":6019,"x":788,"y":565},{"type":"mousemove","time":6230,"x":789,"y":550},{"type":"mousemove","time":6433,"x":789,"y":544},{"type":"mousemove","time":6653,"x":789,"y":544},{"type":"mousedown","time":6711,"x":789,"y":544},{"type":"mouseup","time":6789,"x":789,"y":544},{"time":6790,"delay":600,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1568045496519}] \ No newline at end of file diff --git a/test/runTest/blacklist.js b/test/runTest/blacklist.js new file mode 100644 index 0000000000..86da51abcc --- /dev/null +++ b/test/runTest/blacklist.js @@ -0,0 +1,48 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +module.exports.blacklist = [ + '-cases.html', + 'geo-random-stream.html', + 'chord.html', + 'lines-ny.html', + 'lines-ny-appendData.html', + 'linesGL-ny-appendData.html', + 'richText.html', + 'tmp-base.html', + + 'finished-gl.html', + 'scatter-gps.html', + 'webkit-dep.html', + + // Image size not match + 'symbol2.html', + + // This case will have timeout + 'visualMap-performance1.html', + 'lines-bus.html', + 'lines-stream-not-large.html' +]; + + +module.exports.SVGBlacklist = [ + 'bar-stream-large.html', + 'bar-stream-large1.html', + 'candlestick-large2.html' +]; \ No newline at end of file diff --git a/test/runTest/cli.js b/test/runTest/cli.js new file mode 100644 index 0000000000..20767102a3 --- /dev/null +++ b/test/runTest/cli.js @@ -0,0 +1,309 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +const puppeteer = require('puppeteer'); +const slugify = require('slugify'); +const fse = require('fs-extra'); +const fs = require('fs'); +const path = require('path'); +const program = require('commander'); +const compareScreenshot = require('./compareScreenshot'); +const {testNameFromFile, fileNameFromTest, getVersionDir, buildRuntimeCode, waitTime, getEChartsTestFileName} = require('./util'); +const {origin} = require('./config'); +const Timeline = require('./Timeline'); + +// Handling input arguments. +program + .option('-t, --tests ', 'Tests names list') + .option('--no-headless', 'Not headless') + .option('-s, --speed ', 'Playback speed') + .option('--expected ', 'Expected version') + .option('--actual ', 'Actual version') + .option('--renderer ', 'svg/canvas renderer') + .option('--no-save', 'Don\'t save result'); + +program.parse(process.argv); + +program.speed = +program.speed || 1; +program.actual = program.actual || 'local'; +program.expected = program.expected || '4.2.1'; +program.renderer = (program.renderer || 'canvas').toLowerCase(); + +if (!program.tests) { + throw new Error('Tests are required'); +} + +function getScreenshotDir() { + return 'tmp/__screenshot__'; +} + +function sortScreenshots(list) { + return list.sort((a, b) => { + return a.screenshotName.localeCompare(b.screenshotName); + }); +} + +function getClientRelativePath(absPath) { + return path.join('../', path.relative(__dirname, absPath)); +} + +function replaceEChartsVersion(interceptedRequest, version) { + // TODO Extensions and maps + if (interceptedRequest.url().endsWith('dist/echarts.js')) { + console.log('Use echarts version: ' + version); + interceptedRequest.continue({ + url: `${origin}/test/runTest/${getVersionDir(version)}/${getEChartsTestFileName()}` + }); + } + else { + interceptedRequest.continue(); + } +} + +async function takeScreenshot(page, fullPage, fileUrl, desc, isExpected, minor) { + let screenshotName = testNameFromFile(fileUrl); + if (desc) { + screenshotName += '-' + slugify(desc, { replacement: '-', lower: true }); + } + if (minor) { + screenshotName += '-' + minor; + } + let screenshotPrefix = isExpected ? 'expected' : 'actual'; + fse.ensureDirSync(path.join(__dirname, getScreenshotDir())); + let screenshotPath = path.join(__dirname, `${getScreenshotDir()}/${screenshotName}-${screenshotPrefix}.png`); + await page.screenshot({ + path: screenshotPath, + fullPage + }); + + return {screenshotName, screenshotPath}; +} + +async function runActions(page, testOpt, isExpected, screenshots) { + let timeline = new Timeline(page); + let actions; + try { + let actContent = fs.readFileSync(path.join(__dirname, 'actions', testOpt.name + '.json')); + actions = JSON.parse(actContent); + } + catch (e) { + // Can't find actions + return; + } + + let playbackSpeed = +program.speed; + + for (let action of actions) { + await page.evaluate((x, y) => { + window.scrollTo(x, y); + }, action.scrollX, action.scrollY); + + let count = 0; + async function _innerTakeScreenshot() { + if (!program.save) { + return; + } + const desc = action.desc || action.name; + const {screenshotName, screenshotPath} = await takeScreenshot(page, false, testOpt.fileUrl, desc, isExpected, count++); + screenshots.push({screenshotName, desc, screenshotPath}); + } + await timeline.runAction(action, _innerTakeScreenshot, playbackSpeed); + + if (count === 0) { + await waitTime(200); + await _innerTakeScreenshot(); + } + + // const desc = action.desc || action.name; + // const {screenshotName, screenshotPath} = await takeScreenshot(page, false, testOpt.fileUrl, desc, version); + // screenshots.push({screenshotName, desc, screenshotPath}); + } + timeline.stop(); +} + +async function runTestPage(browser, testOpt, version, runtimeCode, isExpected) { + const fileUrl = testOpt.fileUrl; + const screenshots = []; + const logs = []; + const errors = []; + + const page = await browser.newPage(); + page.setRequestInterception(true); + page.on('request', request => replaceEChartsVersion(request, version)); + + await page.evaluateOnNewDocument(runtimeCode); + + page.on('console', msg => { + logs.push(msg.text()); + }); + page.on('pageerror', error => { + errors.push(error.toString()); + }); + page.on('dialog', async dialog => { + await dialog.dismiss(); + }); + + try { + await page.setViewport({width: 800, height: 600}); + await page.goto(`${origin}/test/${fileUrl}?__RENDERER__=${program.renderer}`, { + waitUntil: 'networkidle2', + timeout: 10000 + }); + + await waitTime(500); // Wait for animation or something else. Pending + // Final shot. + await page.mouse.move(0, 0); + if (program.save) { + let desc = 'Full Shot'; + const {screenshotName, screenshotPath} = await takeScreenshot(page, true, fileUrl, desc, isExpected); + screenshots.push({screenshotName, desc, screenshotPath}); + } + + await runActions(page, testOpt, isExpected, screenshots); + } + catch(e) { + console.error(e); + } + + await page.close(); + + return { + logs, + errors, + screenshots: screenshots + }; +} + +async function writePNG(diffPNG, diffPath) { + return new Promise(resolve => { + let writer = fs.createWriteStream(diffPath); + diffPNG.pack().pipe(writer); + writer.on('finish', () => {resolve();}); + }); +}; + +async function runTest(browser, testOpt, runtimeCode, expectedVersion, actualVersion) { + if (program.renderer === 'svg' && testOpt.ignoreSVG) { + console.log(testOpt.name + ' don\'t support svg testing.'); + return; + } + + if (program.save) { + testOpt.status === 'running'; + + const expectedResult = await runTestPage(browser, testOpt, expectedVersion, runtimeCode, true); + const actualResult = await runTestPage(browser, testOpt, actualVersion, runtimeCode, false); + + // sortScreenshots(expectedResult.screenshots); + // sortScreenshots(actualResult.screenshots); + + const screenshots = []; + let idx = 0; + for (let shot of expectedResult.screenshots) { + let expected = shot; + let actual = actualResult.screenshots[idx++]; + let result = { + actual: getClientRelativePath(actual.screenshotPath), + expected: getClientRelativePath(expected.screenshotPath), + name: actual.screenshotName, + desc: actual.desc + }; + try { + let {diffRatio, diffPNG} = await compareScreenshot( + expected.screenshotPath, + actual.screenshotPath + ); + + let diffPath = `${path.resolve(__dirname, getScreenshotDir())}/${shot.screenshotName}-diff.png`; + await writePNG(diffPNG, diffPath); + + result.diff = getClientRelativePath(diffPath); + result.diffRatio = diffRatio; + } + catch(e) { + result.diff = ''; + result.diffRatio = 1; + console.log(e); + } + screenshots.push(result); + } + + testOpt.results = screenshots; + testOpt.status = 'finished'; + testOpt.actualLogs = actualResult.logs; + testOpt.expectedLogs = expectedResult.logs; + testOpt.actualErrors = actualResult.errors; + testOpt.expectedErrors = expectedResult.errors; + testOpt.actualVersion = actualVersion; + testOpt.expectedVersion = expectedVersion; + testOpt.useSVG = program.renderer === 'svg'; + testOpt.lastRun = Date.now(); + } + else { + // Only run once + await runTestPage(browser, testOpt, 'local', runtimeCode, true); + } +} + +async function runTests(pendingTests) { + const browser = await puppeteer.launch({ + headless: program.headless, + args: [`--window-size=830,750`] // new option + }); + // TODO Not hardcoded. + // let runtimeCode = fs.readFileSync(path.join(__dirname, 'tmp/testRuntime.js'), 'utf-8'); + let runtimeCode = await buildRuntimeCode(); + runtimeCode = `window.__TEST_PLAYBACK_SPEED__ = ${program.speed || 1};\n${runtimeCode}`; + + try { + for (let testOpt of pendingTests) { + console.log(`Running test: ${testOpt.name}, renderer: ${program.renderer}`); + try { + await runTest(browser, testOpt, runtimeCode, program.expected, program.actual); + } + catch (e) { + // Restore status + testOpt.status = 'unsettled'; + console.log(e); + } + + if (program.save) { + process.send(testOpt); + } + } + } + catch(e) { + console.log(e); + } + + await browser.close(); +} + +runTests(program.tests.split(',').map(testName => { + return { + fileUrl: fileNameFromTest(testName), + name: testName, + results: [], + actualLogs: [], + expectedLogs: [], + actualErrors: [], + expectedErrors: [], + status: 'pending' + }; +})); \ No newline at end of file diff --git a/test/runTest/client/client.css b/test/runTest/client/client.css new file mode 100644 index 0000000000..8a2c5984cf --- /dev/null +++ b/test/runTest/client/client.css @@ -0,0 +1,238 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +#main { + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; +} + +* { + font-family: "Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif; +} + +.header { + background-color: #293c55; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.2); + position: relative; + z-index: 10; +} + +.header h1 { + color: #fff; + line-height: 50px; + margin: 0; + font-weight: 200; + font-size: 20px; +} + +#logo>* { + display: inline-block; + vertical-align: middle; +} + +#logo img { + height: 30px; + margin-right: 20px; +} + +.nav-toolbar { + padding: 10px 10px; + background: #162436; + box-shadow: inset 0 0 5px black; + position: fixed; + top: 50px; + width: 330px; + z-index: 2; +} +.nav-toolbar .controls { + margin-top: 10px; +} +.nav-toolbar .controls>* { + display: inline-block; + vertical-align: middle; +} +.nav-toolbar .controls .el-checkbox { + margin-right: 2px; +} +.nav-toolbar .el-icon-setting { + color: #f3f3f3; + font-size: 20px; + margin-left: 5px; + cursor: pointer; +} +.nav-toolbar .el-button { + padding-left: 8px; + padding-right: 8px; +} + +.run-config-item { + margin: 5px 0; +} +.run-config-item>* { + display: inline-block; + vertical-align: middle; + margin-right: 10px; +} + + +.test-list { + overflow-x: hidden; + background: #293c55; + margin: 0; + padding: 0; + margin-top: 80px; +} +.test-list li { + list-style: none; + padding-left: 10px; + cursor: pointer; + color: #f3f3f3; +} +.test-list li a.menu-link { + display: inline-block; + text-decoration: none; + font-size: 14px; + line-height: 40px; + color: #f3f3f3; + margin-left: 3px; + cursor: pointer; +} +.test-list li a.menu-link i { + font-size: 16px; + margin-left: 10px; +} + +.test-list li.active { + background: #e43c59; +} +.test-list li:hover { + background: #162436; +} +.test-list li>* { + vertical-align: middle; + display: inline-block +} + +.test-list .el-progress__text { + font-size: 12px!important; +} + +.test-result .el-progress__text { + font-size: 14px!important; +} + +.test-result h3 { + font-size: 40px; + font-weight: 200; + padding: 0; + margin: 0; +} + +.test-result .title>* { + display: inline-block; + vertical-align: middle; +} +.test-result .title a { + margin-left: 10px; + font-size: 20px; + font-weight: 200; + text-decoration: none; +} +.test-result .title a:hover { + text-decoration: underline; +} + +.test-screenshots { + margin-top: 20px; + padding: 0 20px; +} + +.test-screenshots h4 { + margin-top: 60px; +} + +.test-screenshots .preview { + cursor: pointer; + color: #409eff; +} +.test-screenshots .preview:hover { + text-decoration: underline; +} + +.test-screenshots img { + /* height: 200px; */ + width: 100%; +} +.test-screenshots h4 { + font-size: 30px; + font-weight: 200; + margin-left: -20px; + color: #162436; +} + +.test-errors, .test-logs { + margin-top: 20px; + padding: 0 50px; +} + +.test-logs .log-item { + margin: 10px 20px; + color: #909399; +} + +.test-errors .error-item { + margin: 10px 20px; + color: #f56c6c +} + +iframe { + border: none; + overflow: overlay; +} + + +::-webkit-scrollbar { + height: 8px; + width: 8px; + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + -webkit-border-radius: 2px; + border-radius: 2px +} + +::-webkit-scrollbar-button { + display: none +} + +::-webkit-scrollbar-thumb { + width: 8px; + min-height: 15px; + background: rgba(50,50,50,0.6) !important; + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + -webkit-border-radius: 2px; + border-radius: 2px +} + +::-webkit-scrollbar-thumb:hover { + background: rgba(0,0,0,0.5) !important +} diff --git a/test/runTest/client/client.js b/test/runTest/client/client.js new file mode 100644 index 0000000000..d57457430f --- /dev/null +++ b/test/runTest/client/client.js @@ -0,0 +1,336 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +const socket = io('/client'); +const LOCAL_SAVE_KEY = 'visual-regression-testing-config'; + +function processTestsData(tests, oldTestsData) { + tests.forEach((test, idx) => { + let passed = 0; + test.index = idx; + test.results.forEach(result => { + // Threshold? + if (result.diffRatio < 0.001) { + passed++; + } + let timestamp = test.lastRun || 0; + result.diff = result.diff + '?' + timestamp; + result.actual = result.actual + '?' + timestamp; + result.expected = result.expected + '?' + timestamp; + }); + test.percentage = passed === 0 ? 0 : Math.round(passed / test.results.length * 100); + if (test.percentage === 100) { + test.summary = 'success'; + } + else if (test.percentage < 50) { + test.summary = 'exception'; + } + else { + test.summary = 'warning'; + } + + // Keep select status not change. + if (oldTestsData && oldTestsData[idx]) { + test.selected = oldTestsData[idx].selected; + } + else { + test.selected = false; + } + }); + return tests; +} + +const app = new Vue({ + el: '#app', + data: { + fullTests: [], + currentTestName: '', + sortBy: 'name', + searchString: '', + running: false, + + allSelected: false, + lastSelectedIndex: -1, + + versions: [], + + showIframeDialog: false, + previewIframeSrc: '', + previewTitle: '', + + runConfig: { + noHeadless: false, + replaySpeed: 5, + actualVersion: 'local', + expectedVersion: null, + renderer: 'canvas', + threads: 1 + } + }, + computed: { + tests() { + let sortFunc = this.sortBy === 'name' + ? (a, b) => a.name.localeCompare(b.name) + : (a, b) => { + if (a.percentage === b.percentage) { + if (a.actualErrors && b.actualErrors) { + if (a.actualErrors.length === b.actualErrors.length) { + return a.name.localeCompare(b.name); + } + else { + return b.actualErrors.length - a.actualErrors.length; + } + } + else { + return a.name.localeCompare(b.name); + } + } + return a.percentage - b.percentage; + }; + + if (!this.searchString) { + // Not modify the original tests data. + return this.fullTests.slice().sort(sortFunc); + } + + let searchString = this.searchString.toLowerCase(); + return this.fullTests.filter(test => { + return test.name.toLowerCase().match(searchString); + }).sort(sortFunc); + }, + + selectedTests() { + return this.fullTests.filter(test => { + return test.selected; + }); + }, + unfinishedTests() { + return this.fullTests.filter(test => { + return test.status !== 'finished'; + }); + }, + failedTests() { + return this.fullTests.filter(test => { + return test.status === 'finished' && test.summary !== 'success'; + }); + }, + + currentTest() { + let currentTest = this.fullTests.find(item => item.name === this.currentTestName); + if (!currentTest) { + currentTest = this.fullTests[0]; + } + return currentTest; + }, + + currentTestUrl() { + return window.location.origin + '/test/' + this.currentTestName + '.html'; + }, + + currentTestRecordUrl() { + return window.location.origin + '/test/runTest/recorder/index.html#' + this.currentTestName; + }, + + isSelectAllIndeterminate: { + get() { + if (!this.tests.length) { + return true; + } + return this.tests.some(test => { + return test.selected !== this.tests[0].selected; + }); + }, + set() {} + } + }, + methods: { + goto(url) { + window.location.hash = '#' + url; + }, + toggleSort() { + this.sortBy = this.sortBy === 'name' ? 'percentage' : 'name'; + }, + handleSelectAllChange(val) { + // Only select filtered tests. + this.tests.forEach(test => { + test.selected = val; + }); + this.isSelectAllIndeterminate = false; + }, + handleSelect(idx) { + Vue.nextTick(() => { + this.lastSelectedIndex = idx; + }); + }, + handleShiftSelect(idx) { + if (this.lastSelectedIndex < 0) { + return; + } + let start = Math.min(this.lastSelectedIndex, idx); + let end = Math.max(this.lastSelectedIndex, idx); + let selected = !this.tests[idx].selected; // Will change + for (let i = start; i < end; i++) { + this.tests[i].selected = selected; + } + }, + runSingleTest(testName) { + runTests([testName]); + }, + run(runTarget) { + let tests; + if (runTarget === 'selected') { + tests = this.selectedTests; + } + else if (runTarget === 'unfinished') { + tests = this.unfinishedTests; + } + else if (runTarget === 'failed') { + tests = this.failedTests; + } + else { + tests = this.fullTests; + } + runTests(tests.map(test => test.name)); + }, + stopTests() { + this.running = false; + socket.emit('stop'); + }, + + preview(test, version) { + let searches = []; + + let ecVersion = test[version + 'Version']; + if (ecVersion !== 'local') { + searches.push('__ECDIST__=' + ecVersion); + } + if (test.useSVG) { + searches.push('__RENDERER__=svg'); + } + let src = test.fileUrl; + if (searches.length) { + src = src + '?' + searches.join('&'); + } + this.previewIframeSrc = `../../${src}`; + this.previewTitle = src; + this.showIframeDialog = true; + } + } +}); + +// Save and restore +try { + Object.assign(app.runConfig, JSON.parse(localStorage.getItem(LOCAL_SAVE_KEY))); +} +catch (e) {} +app.$watch('runConfig', () => { + localStorage.setItem(LOCAL_SAVE_KEY, JSON.stringify(app.runConfig)); +}, {deep: true}); + +function runTests(tests) { + if (!tests.length) { + app.$notify({ + title: 'No test selected.', + position: 'top-right' + }); + return; + } + if (!app.runConfig.expectedVersion || !app.runConfig.actualVersion) { + app.$notify({ + title: 'No echarts version selected.', + position: 'top-right' + }); + return; + } + app.running = true; + socket.emit('run', { + tests, + expectedVersion: app.runConfig.expectedVersion, + actualVersion: app.runConfig.actualVersion, + threads: app.runConfig.threads, + renderer: app.runConfig.renderer, + noHeadless: app.runConfig.noHeadless, + replaySpeed: app.runConfig.noHeadless + ? app.runConfig.replaySpeed + : 5 // Force run at 5x speed + }); +} + + +socket.on('connect', () => { + console.log('Connected'); + + app.$el.style.display = 'block'; +}); + +let firstUpdate = true; +socket.on('update', msg => { + let hasFinishedTest = !!msg.tests.find(test => test.status === 'finished'); + if (!hasFinishedTest && firstUpdate) { + app.$confirm('It seems you haven\'t run any test yet!
Do you want to start now?', 'Tip', { + confirmButtonText: 'Yes', + cancelButtonText: 'No', + dangerouslyUseHTMLString: true, + center: true + }).then(value => { + runTests(msg.tests.map(test => test.name)); + }).catch(() => {}); + } + // TODO + app.running = !!msg.running; + app.fullTests = processTestsData(msg.tests, app.fullTests); + + firstUpdate = false; +}); +socket.on('finish', res => { + app.$notify({ + type: 'success', + title: `${res.count} test complete`, + message: `Cost: ${(res.time / 1000).toFixed(1)} s. Threads: ${res.threads}`, + position: 'top-right', + duration: 8000 + }); + console.log(`${res.count} test complete, Cost: ${(res.time / 1000).toFixed(1)} s. Threads: ${res.threads}`); + app.running = false; +}); +socket.on('abort', res => { + app.$notify({ + type: 'info', + title: `Aborted`, + duration: 4000 + }); + app.running = false; +}); +socket.on('versions', versions => { + app.versions = versions.filter(version => { + return !version.startsWith('2.') + && !version.match('beta') + && !version.match('rc'); + }).reverse(); + if (!app.runConfig.expectedVersion) { + app.runConfig.expectedVersion = app.versions[0]; + } + app.versions.unshift('local'); +}); + +function updateTestHash() { + app.currentTestName = window.location.hash.slice(1); +} +updateTestHash(); +window.addEventListener('hashchange', updateTestHash); \ No newline at end of file diff --git a/test/runTest/client/index.html b/test/runTest/client/index.html new file mode 100644 index 0000000000..2d94b979c4 --- /dev/null +++ b/test/runTest/client/index.html @@ -0,0 +1,264 @@ + + + + + + + + + + + Visual Regression Testing Tool + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/test/runTest/compareScreenshot.js b/test/runTest/compareScreenshot.js new file mode 100644 index 0000000000..237b07c045 --- /dev/null +++ b/test/runTest/compareScreenshot.js @@ -0,0 +1,60 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +const PNG = require('pngjs').PNG; +const pixelmatch = require('pixelmatch'); +const fs = require('fs'); + +function readPNG(path) { + return new Promise(resolve => { + fs.createReadStream(path) + .pipe(new PNG()) + .on('parsed', function () { + resolve({ + data: this.data, + width: this.width, + height: this.height + }); + }); + }); +} + +module.exports = function (expectedShotPath, actualShotPath, threshold = 0.1) { + return Promise.all([ + readPNG(expectedShotPath), + readPNG(actualShotPath) + ]).then(([expectedImg, actualImg]) => { + let width = expectedImg.width; + let height = expectedImg.height; + if ( + (width !== actualImg.width) + || (height !== actualImg.height) + ) { + throw new Error('Image size not match'); + } + const diffPNG = new PNG({width, height}); + let diffPixelsCount = pixelmatch(expectedImg.data, actualImg.data, diffPNG.data, width, height, {threshold}); + let totalPixelsCount = width * height; + + return { + diffRatio: diffPixelsCount / totalPixelsCount, + diffPNG + }; + }); +}; diff --git a/test/runTest/config.js b/test/runTest/config.js new file mode 100644 index 0000000000..71de615798 --- /dev/null +++ b/test/runTest/config.js @@ -0,0 +1,24 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +module.exports = { + testVersion: 'test-v0.1', + port: 8866, + origin: 'http://localhost:8866' +}; \ No newline at end of file diff --git a/test/runTest/recorder/index.html b/test/runTest/recorder/index.html new file mode 100644 index 0000000000..c145c58a56 --- /dev/null +++ b/test/runTest/recorder/index.html @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/test/runTest/recorder/recorder.css b/test/runTest/recorder/recorder.css new file mode 100644 index 0000000000..9e6c8cce71 --- /dev/null +++ b/test/runTest/recorder/recorder.css @@ -0,0 +1,217 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +* { + font-family: "Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif; +} + +iframe { + border: none; + position: absolute; + top: 20px; + left: 50%; + + width: 800px; + height: 600px; + margin-left: -400px; + + box-shadow: 0 0 30px rgba(0, 0, 0, 0.2); + overflow-x: hidden; +} + +#open-nav { + position: fixed; + left: 20px; + top: 20px; +} + +.op-notice { + width: 200px; +} + +#tests-nav { + position: fixed; + top: 0; + bottom: 0; + z-index: 2000; + left: 0; + width: 300px; + box-shadow: 0 0 50px rgba(0, 0, 0, 0.4); + background-color: white; + padding: 20px; + overflow-y: scroll; +} + +#tests-nav ul { + margin: 0; + padding: 0; +} + +#tests-nav li { + list-style: none; +} + +#tests-nav a { + color: #444; + text-decoration: none; + line-height: 30px; + transition: .15s ease-out; +} + +#tests-nav a:hover, #tests-nav a.active { + color: #409eff; +} + +#tests-nav .el-icon-circle-close { + position: fixed; + left: 280px; + top: 10px; + cursor: pointer; + font-size: 30px; + z-index: 2100; +} +#tests-nav .el-icon-circle-close:hover { + color: #409eff; +} + +#recording-status { + position: absolute; + top: 650px; + width: 100%; + border-radius: 20px; + text-align: center; +} + +#recording-status .recording-button { + width: 60px; + height: 60px; + border-radius: 50px; + font-size: 35px; +} + +#recording-status .hint { + font-size: 22px; + font-weight: 200; + margin-top: 10px; +} + +#recording-status .recording-time { + font-size: 50px; + font-weight: 200; + margin-top: 10px; + color: #F56C6C; +} + +#recording-status .hint .emphasis { + font-weight: 400; + margin: 0 10px; + color: #409eff; +} + +#actions { + position: fixed; + right: 10px; + width: 300px; +} + +#actions .toolbar { + float: right; + margin-top: -5px; +} + +#actions .toolbar>* { + display: inline-block; + vertical-align: middle; +} +#actions .toolbar i.el-icon-setting { + font-size: 20px; + cursor: pointer; + margin-left: 10px; +} + +.config-item { + margin: 5px 0; +} + +.config-item>* { + display: inline-block; + vertical-align: middle; + margin-right: 10px; +} + +#actions .action-item { + line-height: 40px; + padding: 0 20px; + margin: 0 -20px; + cursor: pointer; +} + +#actions .action-item:hover { + background: #eee; +} + +#actions .action-item.active { + background: #409Eff; + color: #ffffff; +} + +#actions .action-item .operations { + height: 30px; + font-size: 14px; +} +#actions .action-item .operations>* { + display: inline-block; + vertical-align: middle; +} +#actions .action-item .operations i { + margin-left: 5px; + font-size: 18px; +} + +#actions .action-item .operations .el-icon-delete { + color: #F56C6C; + margin-left: 10px; +} + +::-webkit-scrollbar { + height: 8px; + width: 8px; + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + -webkit-border-radius: 2px; + border-radius: 2px +} + +::-webkit-scrollbar-button { + display: none +} + +::-webkit-scrollbar-thumb { + width: 8px; + min-height: 15px; + background: rgba(50,50,50,0.6) !important; + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + -webkit-border-radius: 2px; + border-radius: 2px +} + +::-webkit-scrollbar-thumb:hover { + background: rgba(0,0,0,0.5) !important +} diff --git a/test/runTest/recorder/recorder.js b/test/runTest/recorder/recorder.js new file mode 100644 index 0000000000..eb89d58f5d --- /dev/null +++ b/test/runTest/recorder/recorder.js @@ -0,0 +1,382 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +const socket = io('/recorder'); + +function getNthChild(el) { + let i = 1; + let elTagName = el.tagName; + let elClassName = el.className; + while (el.previousSibling) { + el = el.previousSibling; + if (el.tagName === elTagName && el.className === elClassName) { // TODO extra space in class name? + i++; + } + } + return i; +} +function getUniqueSelector(el) { + if (el.tagName.toLowerCase() === 'body') { + return ''; + } + let selector = ''; + if (el.id) { + // id has highest priority. + return el.id; + } + else { + selector = el.tagName.toLowerCase(); + for (let className of el.classList) { + selector += '.' + className; + } + let idx = getNthChild(el); + if (idx > 1) { + selector += `:nth-child(${idx})`; + } + } + let parentSelector = el.parentNode && getUniqueSelector(el.parentNode); + if (parentSelector) { + selector = parentSelector + '>' + selector; + } + return selector; +} + +const app = new Vue({ + el: '#app', + data: { + tests: [], + + currentTestName: '', + actions: [], + currentAction: null, + recordingAction: null, + + recordingTimeElapsed: 0, + + config: { + screenshotAfterMouseUp: true, + screenshotDelay: 400 + }, + + drawerVisible: true + }, + computed: { + url() { + if (!this.currentTestName) { + return ''; + } + return window.location.origin + '/test/' + this.currentTestName + '.html'; + } + }, + methods: { + refreshPage() { + const $iframe = getIframe(); + if ($iframe.contentWindow) { + $iframe.contentWindow.location.reload(); + } + }, + newAction() { + this.currentAction = { + name: 'Action ' + (this.actions.length + 1), + ops: [] + }; + this.actions.push(this.currentAction); + }, + select(actionName) { + this.currentAction = this.actions.find(action => { + return action.name === actionName; + }); + if (this.currentAction) { + const $iframe = getIframe(); + if ($iframe.contentWindow) { + $iframe.contentWindow.scrollTo({ + left: this.currentAction.scrollX, + top: this.currentAction.scrollY, + behavior: 'smooth' + }); + } + } + }, + + doDelete(actionName) { + app.$confirm('Aure you sure?', 'Delete this action', { + confirmButtonText: 'Yes', + cancelButtonText: 'No', + type: 'warning' + }).then(() => { + this.deletePopoverVisible = false; + let idx = _.findIndex(this.actions, action => action.name === actionName); + if (idx >= 0) { + if (this.currentAction === this.actions[idx]) { + this.currentAction = this.actions[idx + 1] || this.actions[idx - 1]; + } + this.actions.splice(idx, 1); + saveData(); + } + }).catch(e => {}); + }, + + clearOps(actionName) { + app.$confirm('Aure you sure?', 'Clear this action', { + confirmButtonText: 'Yes', + cancelButtonText: 'No', + type: 'warning' + }).then(() => { + this.deletePopoverVisible = false; + let action = this.actions.find(action => action.name === actionName); + if (action) { + action.ops = []; + } + saveData(); + }).catch(e => {}); + }, + + run() { + socket.emit('runSingle', { + testName: app.currentTestName + }); + } + } +}); + +let time = Date.now(); +function updateTime() { + let dTime = Date.now() - time; + time += dTime; + if (app.recordingAction) { + app.recordingTimeElapsed += dTime; + } + requestAnimationFrame(updateTime); +} +requestAnimationFrame(updateTime); + +function getIframe() { + return document.body.querySelector('#test-view'); +} + +function saveData() { + // Save + if (app.currentTestName) { + socket.emit('saveActions', { + testName: app.currentTestName, + actions: app.actions + }); + + let test = app.tests.find(testOpt => testOpt.name === app.currentTestName); + test.actions = app.actions.length; + } +} + +function getEventTime() { + return Date.now() - app.recordingAction.timestamp; +} +function notify(title, message) { + app.$notify.info({ + title, + message, + position: 'top-left', + customClass: 'op-notice' + }); +} + +function keyboardRecordingHandler(e) { + if (e.key.toLowerCase() === 'r' && e.shiftKey) { + let $iframe = getIframe(); + if (!app.recordingAction) { + // Create a new action if currentAction has ops. + if (!app.currentAction || app.currentAction.ops.length > 0) { + app.newAction(); + } + + app.recordingAction = app.currentAction; + if (app.recordingAction) { + app.recordingAction.scrollY = $iframe.contentWindow.scrollY; + app.recordingAction.scrollX = $iframe.contentWindow.scrollX; + app.recordingAction.timestamp = Date.now(); + + app.recordingTimeElapsed = 0; + } + } + else { + if (app.recordingAction && + (app.recordingAction.scrollY !== $iframe.contentWindow.scrollY + || app.recordingAction.scrollX !== $iframe.contentWindow.scrollX)) { + app.recordingAction.ops = []; + app.$alert('You can\'t scroll the page during the action recording. Please create another action after scrolled to the next demo.', 'Recording Fail', { + confirmButtonText: 'Get!' + }); + + } + else { + saveData(); + } + app.recordingAction = null; + } + // Get scroll + } + else if (e.key.toLowerCase() === 's' && e.shiftKey) { + if (app.recordingAction) { + app.recordingAction.ops.push({ + type: 'screenshot', + time: getEventTime() + }); + notify('screenshot', ''); + } + } +} + +function sign(value) { + return value > 0 ? 1 : -1; +} + +function recordIframeEvents(iframe, app) { + let innerDocument = iframe.contentWindow.document; + + + function addMouseOp(type, e) { + if (app.recordingAction) { + let time = getEventTime(); + let op = { + type, + time: time, + x: e.clientX, + y: e.clientY + }; + app.recordingAction.ops.push(op); + if (type === 'mousewheel') { + // TODO Sreenshot after mousewheel? + op.deltaY = e.deltaY; + + // In a reversed direction. + // When creating WheelEvent, the sign of wheelData and deltaY are same + if (sign(e.wheelDelta) !== sign(e.deltaY)) { + op.deltaY = -op.deltaY; + } + } + if (type === 'mouseup' && app.config.screenshotAfterMouseUp) { + // Add a auto screenshot after mouseup + app.recordingAction.ops.push({ + time: time + 1, + delay: app.config.screenshotDelay, + type: 'screenshot-auto' + }); + } + notify(type, `(x: ${e.clientX}, y: ${e.clientY})`); + } + } + + innerDocument.addEventListener('keyup', keyboardRecordingHandler); + + let preventRecordingFollowingMouseEvents = false; + innerDocument.body.addEventListener('mousemove', _.throttle(e => { + if (!preventRecordingFollowingMouseEvents) { + addMouseOp('mousemove', e); + } + }, 200), true); + innerDocument.body.addEventListener('mousedown', e => { + // Can't recording mouse event on select. + // So just prevent it and add a specific 'select' change event. + if (e.target.tagName.toLowerCase() === 'select') { + preventRecordingFollowingMouseEvents = true; + return; + } + addMouseOp('mousedown', e); + }, true); + innerDocument.body.addEventListener('mouseup', e => { + if (!preventRecordingFollowingMouseEvents) { + addMouseOp('mouseup', e); + } + preventRecordingFollowingMouseEvents = false; + }, true); + iframe.contentWindow.addEventListener('mousewheel', e => { + addMouseOp('mousewheel', e); + }, true); + + + innerDocument.body.addEventListener('change', e => { + if (app.recordingAction) { + let selector = getUniqueSelector(e.target); + let time = getEventTime(); + let commonData = { + type: 'valuechange', + selector, + value: e.target.value, + time: time + }; + if (e.target.tagName.toLowerCase() === 'select') { + commonData.target = 'select'; + notify('valuechange', `select(${commonData.value})`); + } + if (commonData.target) { + app.recordingAction.ops.push(commonData); + + if (app.config.screenshotAfterMouseUp) { + // Add a auto screenshot after mouseup + app.recordingAction.ops.push({ + time: time + 1, + delay: app.config.screenshotDelay, + type: 'screenshot-auto' + }); + } + } + } + }); +} + + +function init() { + app.$el.style.display = 'block'; + + document.addEventListener('keyup', keyboardRecordingHandler); + + socket.on('updateActions', data => { + if (data.testName === app.currentTestName) { + app.actions = data.actions; + if (!app.currentAction) { + app.currentAction = app.actions[0]; + } + } + }); + socket.on('getTests', ({tests}) => { + app.tests = tests; + }); + + let $iframe = getIframe(); + $iframe.onload = () => { + recordIframeEvents($iframe, app); + }; + + function updateTestHash() { + app.currentTestName = window.location.hash.slice(1); + // Reset + app.actions = []; + app.currentAction = null; + app.recordingAction = null; + + socket.emit('changeTest', {testName: app.currentTestName}); + + } + updateTestHash(); + window.addEventListener('hashchange', updateTestHash); +} + +socket.on('connect', () => { + console.log('Connected'); + init(); +}); \ No newline at end of file diff --git a/test/runTest/runtime/main.js b/test/runTest/runtime/main.js new file mode 100644 index 0000000000..50af6248bf --- /dev/null +++ b/test/runTest/runtime/main.js @@ -0,0 +1,129 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +import seedrandom from 'seedrandom'; +import './timer'; + +if (typeof __TEST_PLAYBACK_SPEED__ === 'undefined') { + window.__TEST_PLAYBACK_SPEED__ = 1; +} + +let myRandom = new seedrandom('echarts-random'); +// Random for echarts code. +// In case different echarts version called random different times. +// It will cause following random number all wrong. +let myRandom2 = new seedrandom('echarts-random-inner'); +// Fixed random generator +Math.random = function () { + const val = myRandom(); + return val; +}; + +window.__random__inner__ = function () { + const val = myRandom2(); + return val; +}; + +window.addEventListener('DOMContentLoaded', () => { + let style = document.createElement('style'); + // Disable all css animation since it will cause screenshot inconsistent. + // PENDING Only tooltip? div[_echarts_instance_]>div + style.innerHTML = ` +* { + transition-delay: 0s !important; + transition-duration: 0s !important; + animation-delay: -0.0001s !important; + animation-duration: 0s !important; +} + `; + document.head.appendChild(style); + + + // Prevent triggered mouseout event when mouse move out of window. + // DON"T know why, but it happens occasionally and cause hover state/ tooltip wrong before screenshot. + + + document.body.addEventListener('mouseout', e => { + if (!e.relatedTarget) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + }, true); + + // Draw mouse + const box = document.createElement('puppeteer-mouse-pointer'); + const styleElement = document.createElement('style'); + styleElement.innerHTML = ` +puppeteer-mouse-pointer { + pointer-events: none; + position: absolute; + top: 0; + z-index: 10000; + left: 0; + width: 20px; + height: 20px; + background: rgba(0,0,0,.4); + border: 1px solid white; + border-radius: 10px; + margin: -10px 0 0 -10px; + padding: 0; + transition: background .2s, border-radius .2s, border-color .2s; +} +puppeteer-mouse-pointer.button-1 { + transition: none; + background: rgba(0,0,0,0.9); +} +puppeteer-mouse-pointer.button-2 { + transition: none; + border-color: rgba(0,0,255,0.9); +} +puppeteer-mouse-pointer.button-3 { + transition: none; + border-radius: 4px; +} +puppeteer-mouse-pointer.button-4 { + transition: none; + border-color: rgba(255,0,0,0.9); +} +puppeteer-mouse-pointer.button-5 { + transition: none; + border-color: rgba(0,255,0,0.9); +} +`; + document.head.appendChild(styleElement); + document.body.appendChild(box); + document.addEventListener('mousemove', event => { + box.style.left = event.pageX + 'px'; + box.style.top = event.pageY + 'px'; + updateButtons(event.buttons); + }, true); + document.addEventListener('mousedown', event => { + updateButtons(event.buttons); + box.classList.add('button-' + event.which); + }, true); + document.addEventListener('mouseup', event => { + updateButtons(event.buttons); + box.classList.remove('button-' + event.which); + }, true); + function updateButtons(buttons) { + for (let i = 0; i < 5; i++) { + box.classList.toggle('button-' + i, buttons & (1 << i)); + } + } +}); \ No newline at end of file diff --git a/test/runTest/runtime/shim.js b/test/runTest/runtime/shim.js new file mode 100644 index 0000000000..fa3544e3fe --- /dev/null +++ b/test/runTest/runtime/shim.js @@ -0,0 +1,28 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +(function () { + if (typeof autorun !== 'undefined') { + return; + } + var autorun = {}; + autorun.createScreenshotTest = function () {}; + autorun.compareScreenshot = function () {}; + autorun.finish = function () {}; +})(); \ No newline at end of file diff --git a/test/runTest/runtime/timer.js b/test/runTest/runtime/timer.js new file mode 100644 index 0000000000..fd81940af3 --- /dev/null +++ b/test/runTest/runtime/timer.js @@ -0,0 +1,41 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +// Mock date. +const NativeDate = window.Date; + +const fixedTimestamp = 1566458693300; +const actualTimestamp = NativeDate.now(); +const mockNow = function () { + // speed up + return fixedTimestamp + (NativeDate.now() - actualTimestamp) * window.__TEST_PLAYBACK_SPEED__; +}; +function MockDate(...args) { + if (!args.length) { + return new NativeDate(mockNow()); + } + else { + return new NativeDate(...args); + } +} +MockDate.prototype = Object.create(NativeDate.prototype); +Object.setPrototypeOf(MockDate, NativeDate); +MockDate.now = mockNow; +window.Date = MockDate; + diff --git a/test/runTest/server.js b/test/runTest/server.js new file mode 100644 index 0000000000..04ba560697 --- /dev/null +++ b/test/runTest/server.js @@ -0,0 +1,325 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +const handler = require('serve-handler'); +const http = require('http'); +const path = require('path'); +// const open = require('open'); +const {fork} = require('child_process'); +const semver = require('semver'); +const {port, origin} = require('./config'); +const {getTestsList, updateTestsList, saveTestsList, mergeTestsResults, updateActionsMeta} = require('./store'); +const {prepareEChartsLib, getActionsFullPath, fetchVersions} = require('./util'); +const fse = require('fs-extra'); +const fs = require('fs'); +const open = require('open'); + +function serve() { + const server = http.createServer((request, response) => { + return handler(request, response, { + cleanUrls: false, + // Root folder of echarts + public: __dirname + '/../../' + }); + }); + + server.listen(port, () => { + // console.log(`Server started. ${origin}`); + }); + + + const io = require('socket.io')(server); + return { + io + }; +}; + +let runningThreads = []; +let pendingTests; +let aborted = false; + +function stopRunningTests() { + if (runningThreads) { + runningThreads.forEach(thread => thread.kill()); + runningThreads = []; + } + if (pendingTests) { + pendingTests.forEach(testOpt => { + if (testOpt.status === 'pending') { + testOpt.status = 'unsettled'; + } + }); + pendingTests = null; + } +} + +class Thread { + constructor() { + this.tests = []; + + this.onExit; + this.onUpdate; + } + + fork(extraArgs) { + let p = fork(path.join(__dirname, 'cli.js'), [ + '--tests', + this.tests.map(testOpt => testOpt.name).join(','), + ...extraArgs + ]); + this.p = p; + + // Finished one test + p.on('message', testOpt => { + mergeTestsResults([testOpt]); + saveTestsList(); + this.onUpdate(); + }); + // Finished all + p.on('exit', () => { + this.p = null; + setTimeout(this.onExit); + }); + } + + kill() { + if (this.p) { + this.p.kill(); + } + } +} + +function startTests(testsNameList, socket, { + noHeadless, + threadsCount, + replaySpeed, + actualVersion, + expectedVersion, + renderer, + noSave +}) { + console.log('Received: ', testsNameList.join(',')); + + threadsCount = threadsCount || 1; + stopRunningTests(); + + return new Promise(resolve => { + pendingTests = getTestsList().filter(testOpt => { + return testsNameList.includes(testOpt.name); + }); + + if (!noSave) { + pendingTests.forEach(testOpt => { + // Reset all tests results + testOpt.status = 'pending'; + testOpt.results = []; + }); + + if (!aborted) { + socket.emit('update', {tests: getTestsList(), running: true}); + } + } + let runningCount = 0; + function onExit() { + runningCount--; + if (runningCount === 0) { + runningThreads = []; + resolve(); + } + } + function onUpdate() { + // Merge tests. + if (!aborted && !noSave) { + socket.emit('update', {tests: getTestsList(), running: true}); + } + } + threadsCount = Math.min(threadsCount, pendingTests.length); + // Assigning tests to threads + runningThreads = new Array(threadsCount).fill(0).map(a => new Thread() ); + for (let i = 0; i < pendingTests.length; i++) { + runningThreads[i % threadsCount].tests.push(pendingTests[i]); + } + for (let i = 0; i < threadsCount; i++) { + runningThreads[i].onExit = onExit; + runningThreads[i].onUpdate = onUpdate; + runningThreads[i].fork([ + '--speed', replaySpeed || 5, + '--actual', actualVersion, + '--expected', expectedVersion, + '--renderer', renderer, + ...(noHeadless ? ['--no-headless'] : []), + ...(noSave ? ['--no-save'] : []) + ]); + runningCount++; + } + // If something bad happens and no proccess are started successfully + if (runningCount === 0) { + resolve(); + } + }); +} + +function checkPuppeteer() { + try { + const packageConfig = require('puppeteer/package.json'); + return semver.satisfies(packageConfig.version, '>=1.19.0'); + } + catch (e) { + return false; + } +} + +async function start() { + if (!checkPuppeteer()) { + // TODO Check version. + console.error(`Can't find puppeteer >= 1.19.0, use 'npm install puppeteer --no-save' to install or update`); + return; + } + + let [versions] = await Promise.all([ + fetchVersions(), + updateTestsList(true) + ]); + + // let runtimeCode = await buildRuntimeCode(); + // fse.outputFileSync(path.join(__dirname, 'tmp/testRuntime.js'), runtimeCode, 'utf-8'); + + // Start a static server for puppeteer open the html test cases. + let {io} = serve(); + + io.of('/client').on('connect', async socket => { + await updateTestsList(); + + socket.emit('update', { + tests: getTestsList(), + running: runningThreads.length > 0 + }); + + socket.on('run', async data => { + + let startTime = Date.now(); + aborted = false; + + await prepareEChartsLib(data.expectedVersion); // Expected version. + await prepareEChartsLib(data.actualVersion); // Version to test + + if (aborted) { // If it is aborted when downloading echarts lib. + return; + } + + // TODO Should broadcast to all sockets. + try { + await startTests( + data.tests, + io.of('/client'), + { + noHeadless: data.noHeadless, + threadsCount: data.threads, + replaySpeed: data.replaySpeed, + actualVersion: data.actualVersion, + expectedVersion: data.expectedVersion, + renderer: data.renderer, + noSave: false + } + ); + } + catch (e) { + console.error(e); + } + + if (!aborted) { + console.log('Finished'); + io.of('/client').emit('finish', { + time: Date.now() - startTime, + count: data.tests.length, + threads: data.threads + }); + } + else { + console.log('Aborted!'); + } + }); + socket.on('stop', () => { + stopRunningTests(); + io.of('/client').emit('abort'); + aborted = true; + }); + + socket.emit('versions', versions); + }); + + io.of('/recorder').on('connect', async socket => { + await updateTestsList(); + socket.on('saveActions', data => { + if (data.testName) { + fse.outputFile( + getActionsFullPath(data.testName), + JSON.stringify(data.actions), + 'utf-8' + ); + updateActionsMeta(data.testName, data.actions); + } + // TODO Broadcast the change? + }); + socket.on('changeTest', data => { + try { + const actionData = fs.readFileSync(getActionsFullPath(data.testName), 'utf-8'); + socket.emit('updateActions', { + testName: data.testName, + actions: JSON.parse(actionData) + }); + } + catch(e) { + // Can't find file. + } + }); + socket.on('runSingle', async data => { + try { + await startTests([data.testName], socket, { + noHeadless: true, + threadsCount: 1, + replaySpeed: 2, + actualVersion: data.actualVersion, + expectedVersion: data.expectedVersion, + renderer: data.renderer, + noSave: true + }); + } + catch (e) { console.error(e); } + console.log('Finished'); + socket.emit('finish'); + }); + + socket.emit('getTests', { + tests: getTestsList().map(test => { + return { + name: test.name, + actions: test.actions + }; + }) + }); + }); + + console.log(`Dashboard: ${origin}/test/runTest/client/index.html`); + console.log(`Interaction Recorder: ${origin}/test/runTest/recorder/index.html`); + open(`${origin}/test/runTest/client/index.html`); + +} + +start(); \ No newline at end of file diff --git a/test/runTest/store.js b/test/runTest/store.js new file mode 100644 index 0000000000..93e78567da --- /dev/null +++ b/test/runTest/store.js @@ -0,0 +1,148 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +const path = require('path'); +const fse = require('fs-extra'); +const fs = require('fs'); +const glob = require('glob'); +const {testNameFromFile} = require('./util'); +const util = require('util'); +const {blacklist, SVGBlacklist} = require('./blacklist'); + +let _tests = []; +let _testsMap = {}; + +class Test { + constructor(fileUrl) { + this.fileUrl = fileUrl; + this.name = testNameFromFile(fileUrl); + + // If this test case ignore svg testing. + this.ignoreSVG = false; + + this.status = 'unsettled'; + + // Run results + this.results = []; // Screenshots + + this.actualLogs = []; + this.expectedLogs = []; + this.actualErrors = []; + this.expectedErrors = []; + + // Use echarts versions. + this.actualVersion = null; + this.expectedVersion = null; + + // Last timestamp + this.lastRun = 0; + + // Use SVG + this.useSVG = false; + } +} + +function getCacheFilePath() { + return path.join(__dirname, 'tmp/__cache__.json');; +} + +module.exports.getTestsList = function () { + return _tests; +}; + +module.exports.getTestByFileUrl = function (url) { + return _testsMap[url]; +}; + +module.exports.updateTestsList = async function (setPendingTestToUnsettled) { + let tmpFolder = path.join(__dirname, 'tmp'); + fse.ensureDirSync(tmpFolder); + _tests = []; + _testsMap = {}; + try { + let cachedStr = fs.readFileSync(getCacheFilePath(), 'utf-8'); + _tests = JSON.parse(cachedStr); + _tests.forEach(test => { + // In somehow tests are stopped and leave the status pending. + // Set the status to unsettled again. + if (setPendingTestToUnsettled) { + if (test.status === 'pending') { + test.status = 'unsettled'; + } + } + _testsMap[test.fileUrl] = test; + }); + } + catch(e) { + _tests = []; + } + // Find if there is new html file + let files = await util.promisify(glob)('**.html', { cwd: path.resolve(__dirname, '../') }); + files.forEach(fileUrl => { + if (blacklist.includes(fileUrl)) { + return; + } + if (_testsMap[fileUrl]) { + return; + } + + let test = new Test(fileUrl); + test.ignoreSVG = SVGBlacklist.includes(fileUrl); + + _tests.push(test); + _testsMap[fileUrl] = test; + }); + + let actionsMetaData = {}; + let metaPath = path.join(__dirname, 'actions/__meta__.json'); + try { + actionsMetaData = JSON.parse(fs.readFileSync(metaPath, 'utf-8')); + } + catch(e) {} + + _tests.forEach(testOpt => { + testOpt.actions = actionsMetaData[testOpt.name] || 0; + }); + return _tests; +}; + +module.exports.saveTestsList = function () { + fse.outputFileSync(getCacheFilePath(), JSON.stringify(_tests, null, 2), 'utf-8'); +}; + +module.exports.mergeTestsResults = function (testsResults) { + testsResults.forEach(testResult => { + if (_testsMap[testResult.fileUrl]) { + Object.assign(_testsMap[testResult.fileUrl], testResult); + } + }); +}; + +module.exports.updateActionsMeta = function (testName, actions) { + let metaData; + let metaPath = path.join(__dirname, 'actions/__meta__.json'); + try { + metaData = JSON.parse(fs.readFileSync(metaPath, 'utf-8')); + } + catch(e) { + metaData = {}; + } + metaData[testName] = actions.length; + fs.writeFileSync(metaPath, JSON.stringify(metaData, null, 2), 'utf-8'); +}; \ No newline at end of file diff --git a/test/runTest/util.js b/test/runTest/util.js new file mode 100644 index 0000000000..9bac45e4b6 --- /dev/null +++ b/test/runTest/util.js @@ -0,0 +1,142 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +const path = require('path'); +const fse = require('fs-extra'); +const https = require('https'); +const fs = require('fs'); +const rollup = require('rollup'); +const resolve = require('rollup-plugin-node-resolve'); +const commonjs = require('rollup-plugin-commonjs'); +const util = require('util'); +const config = require('./config'); + +function modifyEChartsCode(code) { + return code.replace(/Math.random/g, '__random__inner__'); +} + +module.exports.testNameFromFile = function(fileName) { + return path.basename(fileName, '.html'); +}; + +module.exports.fileNameFromTest = function (testName) { + return testName + '.html'; +}; + +function getVersionDir(version) { + version = version || 'local'; + return `tmp/__version__/${version}`; +}; +module.exports.getVersionDir = getVersionDir; + +module.exports.getActionsFullPath = function (testName) { + return path.join(__dirname, 'actions', testName + '.json'); +}; + +module.exports.getEChartsTestFileName = function () { + return `echarts.test-${config.testVersion}.js`; +}; + +module.exports.prepareEChartsLib = function (version) { + let versionFolder = path.join(__dirname, getVersionDir(version)); + fse.ensureDirSync(versionFolder); + if (!version || version === 'local') { + // Developing version, make sure it's new build + fse.copySync(path.join(__dirname, '../../dist/echarts.js'), `${versionFolder}/echarts.js`); + let code = modifyEChartsCode(fs.readFileSync(`${versionFolder}/echarts.js`, 'utf-8')); + fs.writeFileSync(`${versionFolder}/${module.exports.getEChartsTestFileName()}`, code, 'utf-8'); + return Promise.resolve(); + + } + return new Promise(resolve => { + let testLibPath = `${versionFolder}/${module.exports.getEChartsTestFileName()}`; + if (!fs.existsSync(testLibPath)) { + const file = fs.createWriteStream(`${versionFolder}/echarts.js`); + + console.log(`Downloading echarts@${version} from `, `https://cdn.jsdelivr.net/npm/echarts@${version}/dist/echarts.js`); + https.get(`https://cdn.jsdelivr.net/npm/echarts@${version}/dist/echarts.js`, response => { + response.pipe(file); + + file.on('finish', () => { + let code = modifyEChartsCode(fs.readFileSync(`${versionFolder}/echarts.js`, 'utf-8')); + fs.writeFileSync(testLibPath, code, 'utf-8'); + resolve(); + }); + }); + } + else { + resolve(); + } + }); +}; + +module.exports.fetchVersions = function () { + return new Promise((resolve, reject) => { + https.get(`https://registry.npmjs.org/echarts`, res => { + if (res.statusCode !== 200) { + res.destroy(); + reject('Failed fetch versions from https://registry.npmjs.org/echarts'); + return; + } + var buffers = []; + res.on('data', buffers.push.bind(buffers)); + res.on('end', function () { + try { + var data = Buffer.concat(buffers); + resolve(Object.keys(JSON.parse(data).versions)); + } + catch (e) { + reject(e.toString()); + } + }); + }); + }); +}; + +module.exports.buildRuntimeCode = async function () { + const bundle = await rollup.rollup({ + input: path.join(__dirname, 'runtime/main.js'), + plugins: [ + resolve(), + commonjs(), + { + resolveId(importee) { + return importee === 'crypto' ? importee : null; + }, + load(id) { + // seedrandom use crypto as external module + return id === 'crypto' ? 'export default null;' : null; + } + } + ] + }); + const output = await bundle.generate({ + format: 'iife', + name: 'autorun' + }); + return output.code; +}; + +module.exports.waitTime = function (time) { + return new Promise(resolve => { + setTimeout(() => { + resolve(); + }, time); + }); +} \ No newline at end of file diff --git a/test/scatter-gps.html b/test/scatter-gps.html index 5c1d5dbf2a..2cc8b28f23 100644 --- a/test/scatter-gps.html +++ b/test/scatter-gps.html @@ -70,7 +70,7 @@ } // var dataURL = `../../echarts-gl/test/data/gps/gps_${idx}.bin`; // var dataURL = `../../data-online/gps/gps_${idx}.bin`; - var dataURL = `../../echarts-examples/public/data/asset/data/gps/gps_${idx}.bin`; + var dataURL = `../../echarts-examples/public/data/asset/data/gps2/gps_${idx}.bin`; var xhr = new XMLHttpRequest(); xhr.open('GET', dataURL, true); xhr.responseType = 'arraybuffer'; diff --git a/test/stackBar-dataZoom.html b/test/stackBar-dataZoom.html new file mode 100644 index 0000000000..5cc50e659e --- /dev/null +++ b/test/stackBar-dataZoom.html @@ -0,0 +1,1431 @@ + + + + + + + + + + + + + + + + + + + +

Bar/Line chart stack normal with dataZoom in the toolbox(should not exceed the range of coord)

+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/test/theme.html b/test/theme.html index 6e44cb2a90..3c0ce54bc9 100644 --- a/test/theme.html +++ b/test/theme.html @@ -32,7 +32,7 @@ margin: 0; } #main { - width: 1000px; + width: 100%; background: #fff; } diff --git a/test/tooltip-event.html b/test/tooltip-event.html index e2268f3619..5b1e26c2fc 100644 --- a/test/tooltip-event.html +++ b/test/tooltip-event.html @@ -90,7 +90,7 @@ tooltip: { formatter: function () { return [ - '' + '' ].join(''); }, enterable: true diff --git a/test/tooltip-setOption.html b/test/tooltip-setOption.html index deebf71461..d66fa8e29b 100644 --- a/test/tooltip-setOption.html +++ b/test/tooltip-setOption.html @@ -54,7 +54,7 @@

triggerOn: click, setOption when trigger axis (keep show)

tooltip should auto show and auto disappear when setOption(..., {notMerge: true})

-
+
diff --git a/test/tree-addNode.html b/test/tree-addNode.html index f1f2c8cd44..82c6647096 100644 --- a/test/tree-addNode.html +++ b/test/tree-addNode.html @@ -104,7 +104,7 @@ id: '2', name: 'tree1', data: [data], - // Used to test when the data is null whether it is work well. + // Used to test when the data is null whether it is work well. // data: [], top: '20%', @@ -112,13 +112,15 @@ bottom: '22%', right: '20%', + roam: true, + symbolSize: 15, orient: 'RL', label: { position: 'right', verticalAlign: 'middle', - align: 'left' + align: 'left' }, leaves: { @@ -128,7 +130,7 @@ align: 'right' } }, - + expandAndCollapse: true, animationDuration: 550, animationDurationUpdate: 750 diff --git a/test/tree-basic.html b/test/tree-basic.html index 06cf6ee7ea..bb8a4b7edc 100644 --- a/test/tree-basic.html +++ b/test/tree-basic.html @@ -68,7 +68,6 @@ { type: 'tree', id: '3', - roam: true, data: [data], @@ -76,6 +75,7 @@ left: '7%', bottom: '1%', right: '20%', + roam: true, symbolSize: 7, @@ -102,17 +102,17 @@ ] }); - // setTimeout(function() { - // var newData = echarts.util.clone(data); - // newData.children.splice(0, 1); - // chart.setOption({ - // series: [{ - // type: 'tree', - // id: '3', - // data: [newData] - // }] - // }, false); - // }, 1000); + setTimeout(function() { + var newData = echarts.util.clone(data); + newData.children.splice(0, 1); + chart.setOption({ + series: [{ + type: 'tree', + id: '3', + data: [newData] + }] + }, false); + }, 1000); }); }); diff --git a/test/tree-orient-right-left.html b/test/tree-orient-right-left.html index 067b7c2000..2aaefa03d8 100644 --- a/test/tree-orient-right-left.html +++ b/test/tree-orient-right-left.html @@ -75,10 +75,14 @@ bottom: '1%', right: '7%', + roam: true, + symbolSize: 7, orient: 'RL', - // initialTreeDepth: -1, + + initialTreeDepth: -1, + label: { position: 'right', verticalAlign: 'middle', diff --git a/test/tree-orient-top-bottom.html b/test/tree-orient-top-bottom.html index 6f2d860e1b..2f48220995 100644 --- a/test/tree-orient-top-bottom.html +++ b/test/tree-orient-top-bottom.html @@ -70,6 +70,8 @@ top: '20%', bottom: '8%', + roam: true, + symbol: 'emptyCircle', orient: 'BT', diff --git a/test/tree-radial.html b/test/tree-radial.html index 43e299c7cd..e5550ada43 100644 --- a/test/tree-radial.html +++ b/test/tree-radial.html @@ -67,6 +67,7 @@ top: '18%', bottom: '14%', + roam: true, layout: 'radial', diff --git a/test/tree-vertical.html b/test/tree-vertical.html index b3f944acb9..8223064838 100644 --- a/test/tree-vertical.html +++ b/test/tree-vertical.html @@ -70,6 +70,8 @@ top: '8%', bottom: '20%', + roam: true, + symbol: 'emptyCircle', orient: 'vertical',