You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by zs...@apache.org on 2017/04/10 03:24:16 UTC

[08/10] incubator-weex git commit: Merge branch '0.12-dev-recycler-tc' into 0.12-dev

Merge branch '0.12-dev-recycler-tc' into 0.12-dev

* 0.12-dev-recycler-tc: (209 commits)
  * [tc] recycler tc
  * [android] fix NPE in move fixed view
  * [doc] add scrollToElement animation support
  * [jsfm] fix function markupState
  * [example] fix banner
  * [jsfm] v0.20.2
  * [jsfm] update jsfm version to 0.19.17 for fixed Vue leak
  * [jsfm] v0.19.17
  * [jsfm] update weex-vue-framework to 2.2.1-weex.2 && destroy runtime document
  * [android] fix setSize when defaultHeight is use screen height
  * [jsfm] update vue framework to 2.2.2-weex.1
  * [test] Closes #141: invalid/pullrequest
  * [test] Closes #141: invalid/pullrequest
  * [test] fix CI
  * [android] update imageView
  * [android] avoid remove-readd view when fixed component view already moved
  * [android] avoid remove-readd view when fixed component view already moved
  * [html5] clear log.
  + [ios] change to color
  * [ios] fix box shadow  shadowColor get method circularly called
  ...

# Conflicts:
#	test/scripts/components/recycler.test.js


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/53b61da6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/53b61da6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/53b61da6

Branch: refs/heads/0.12-dev
Commit: 53b61da6ac1610fe3153d147c67114cd70d478fc
Parents: 5445c92 db99d41
Author: zshshr <zh...@gmail.com>
Authored: Thu Apr 6 19:23:40 2017 +0800
Committer: zshshr <zh...@gmail.com>
Committed: Thu Apr 6 19:23:40 2017 +0800

----------------------------------------------------------------------
 .eslintrc                                       |   16 +-
 .flowconfig                                     |   16 +
 README.md                                       |   50 +-
 android/commons/build.gradle                    |    3 +-
 .../weex/commons/AbstractWeexActivity.java      |   24 +
 android/playground/app/build.gradle             |    3 +-
 .../playground/app/src/main/assets/animation.js |   11 +-
 .../app/src/main/assets/component/a-demo.js     |   11 +-
 .../src/main/assets/component/countdown-demo.js |   11 +-
 .../app/src/main/assets/component/image-demo.js |   11 +-
 .../app/src/main/assets/component/input-demo.js |   11 +-
 .../main/assets/component/list/list-basic.js    |    8 +
 .../assets/component/list/list-demo-horizon.js  |    8 +
 .../src/main/assets/component/list/list-demo.js |    8 +
 .../src/main/assets/component/marquee-demo.js   |   11 +-
 .../src/main/assets/component/navigator-demo.js |   15 +-
 .../main/assets/component/process-bar-demo.js   |   11 +-
 .../src/main/assets/component/scroller-demo.js  |   11 +-
 .../slider-neighbor/slider-neighbor-item.js     |    8 +
 .../slider-neighbor/slider-neighbor-page.js     |    8 +
 .../src/main/assets/component/slider/index.js   |   11 +-
 .../main/assets/component/slider/slider-item.js |    8 +
 .../main/assets/component/slider/slider-page.js |    8 +
 .../main/assets/component/tabbar/tabbar-demo.js |   15 +-
 .../main/assets/component/tabbar/tabbar-item.js |    8 +
 .../app/src/main/assets/component/text-demo.js  |   11 +-
 .../app/src/main/assets/component/video-demo.js |   11 +-
 .../app/src/main/assets/component/web-demo.js   |   11 +-
 android/playground/app/src/main/assets/hello.js |    8 +
 .../playground/app/src/main/assets/iconfont.js  |    8 +
 .../app/src/main/assets/module/clipboard.js     |   11 +-
 .../java/com/alibaba/weex/IndexActivity.java    |    6 +
 .../src/main/java/com/alibaba/weex/Utility.java |  277 +
 .../java/com/alibaba/weex/WXApplication.java    |    4 +
 .../java/com/alibaba/weex/WXPageActivity.java   |   58 +
 .../extend/WXInstanceStatisticsListener.java    |  268 +
 .../app/src/main/res/layout/id_stub.xml         |   57 +
 android/sdk/assets/main.js                      |   14 +-
 android/sdk/build.gradle                        |    2 +
 android/sdk/libs/armeabi/libweexv8.so           |  Bin 3583820 -> 3563544 bytes
 android/sdk/libs/x86/libweexv8.so               |  Bin 4336768 -> 4545544 bytes
 .../com/taobao/weex/IWXStatisticsListener.java  |  252 +
 .../main/java/com/taobao/weex/InitConfig.java   |   14 +
 .../java/com/taobao/weex/WXEnvironment.java     |   18 +
 .../main/java/com/taobao/weex/WXSDKEngine.java  |    5 +-
 .../java/com/taobao/weex/WXSDKInstance.java     |   86 +-
 .../main/java/com/taobao/weex/WXSDKManager.java |   79 +-
 .../taobao/weex/adapter/IWXSoLoaderAdapter.java |  236 +
 .../java/com/taobao/weex/bridge/WXBridge.java   |    6 +
 .../com/taobao/weex/bridge/WXBridgeManager.java |   59 +-
 .../java/com/taobao/weex/bridge/WXParams.java   |   13 +
 .../java/com/taobao/weex/common/Constants.java  |    8 +
 .../java/com/taobao/weex/common/IWXBridge.java  |    7 +
 .../taobao/weex/common/WXJSBridgeMsgType.java   |    1 +
 .../taobao/weex/ui/IExternalMoudleGetter.java   |  215 +
 .../taobao/weex/ui/component/WXComponent.java   |    7 +-
 .../com/taobao/weex/ui/component/WXImage.java   |    6 +
 .../java/com/taobao/weex/utils/OsVersion.java   |  233 +
 .../main/java/com/taobao/weex/utils/Trace.java  |  301 +
 .../taobao/weex/utils/WXSoInstallMgrSdk.java    |   51 +-
 .../java/com/taobao/weex/utils/WXUtils.java     |   84 +-
 .../taobao/weex/bridge/WXWebsocketBridge.java   |    3 +
 bin/dist-vue.sh                                 |   42 +
 build/build.js                                  |    2 +
 build/config.js                                 |   13 +-
 build/examples-banner-plugin.js                 |   65 +
 build/karma.vue.conf.js                         |   69 +-
 build/webpack.examples.config.js                |    1 +
 build/webpack.examples.web.config.js            |   24 +-
 dangerfile.js                                   |   30 +
 doc/source/cn/references/modules/dom.md         |    3 +-
 doc/source/references/modules/dom.md            |    3 +-
 examples/module/componentRect.we                |    4 +-
 examples/vue/animation.vue                      |    4 +-
 examples/vue/components/countdown.vue           |    2 +-
 examples/vue/components/image.vue               |    2 +-
 examples/vue/components/list.vue                |   19 +-
 examples/vue/components/marquee.vue             |    3 +-
 examples/vue/components/navigator.vue           |    7 +-
 examples/vue/components/scroller.vue            |   34 +-
 examples/vue/components/slider.vue              |   22 +-
 examples/vue/components/text.vue                |    2 +-
 examples/vue/components/textarea.vue            |   57 +
 examples/vue/components/video.vue               |    2 +-
 examples/vue/components/web.vue                 |    2 +-
 examples/vue/iconfont.vue                       |    2 +-
 examples/vue/include/base-url.js                |    4 +-
 examples/vue/include/button.vue                 |    2 +-
 examples/vue/include/countdown.vue              |    2 +-
 examples/vue/include/example-list-item.vue      |    2 +-
 examples/vue/include/example-list.vue           |    2 +-
 examples/vue/include/h1.vue                     |    2 +-
 examples/vue/include/h2.vue                     |    2 +-
 examples/vue/include/h3.vue                     |    2 +-
 examples/vue/include/hn.vue                     |    2 +-
 examples/vue/include/list-item.vue              |    2 +-
 examples/vue/include/marquee.vue                |    4 +-
 examples/vue/include/navbar.vue                 |    2 +-
 examples/vue/include/navpage.vue                |    2 +-
 examples/vue/include/panel.vue                  |   10 +-
 examples/vue/include/slider-item.vue            |    2 +-
 examples/vue/include/slider-page.vue            |    5 +-
 examples/vue/include/tabbar.vue                 |    6 +-
 examples/vue/include/tabitem.vue                |    2 +-
 examples/vue/include/tip.vue                    |    2 +-
 examples/vue/include/wxc-list-item.vue          |    2 +-
 examples/vue/modules/stream.vue                 |    2 +-
 examples/vue/showcase/calculator.vue            |    2 +-
 examples/vue/showcase/include/banners.vue       |    4 +-
 examples/vue/showcase/include/brand.vue         |    2 +-
 examples/vue/showcase/include/category.vue      |    8 +-
 examples/vue/showcase/include/coupon.vue        |    2 +-
 examples/vue/showcase/include/goods.vue         |    4 +-
 examples/vue/showcase/include/headlines.vue     |    2 +-
 examples/vue/showcase/include/match.vue         |    4 +-
 examples/vue/showcase/include/resource.vue      |    2 +-
 examples/vue/showcase/include/scene.vue         |    4 +-
 examples/vue/showcase/itemlist.vue              |  246 +-
 examples/vue/showcase/new-fashion.vue           |    2 +-
 examples/vue/style/index.vue                    |    2 +-
 examples/vue/style/style-box.vue                |    2 +-
 examples/vue/style/style-flex.vue               |    2 +-
 examples/vue/style/style-item.vue               |    2 +-
 examples/vue/syntax/hello-world-3.vue           |    4 +-
 examples/vue/syntax/hello-world-4.vue           |    4 +-
 examples/vue/syntax/hello-world-5.vue           |    4 +-
 examples/vue/syntax/hello-world.vue             |    4 +-
 examples/vue/syntax/include/btn.vue             |    2 +-
 examples/vue/syntax/include/sub.vue             |    2 +-
 examples/vue/syntax/script-component.vue        |    2 +-
 examples/vue/syntax/script-data.vue             |    2 +-
 examples/vue/syntax/script-events.vue           |    4 +-
 examples/vue/syntax/script-instance.vue         |    2 +-
 examples/vue/syntax/script-lifecycle.vue        |    4 +-
 examples/vue/syntax/script-module.vue           |    2 +-
 examples/vue/syntax/script-options.vue          |    2 +-
 examples/vue/syntax/template-class.vue          |    2 +-
 examples/vue/syntax/template-event.vue          |    2 +-
 examples/vue/syntax/template-if.vue             |    2 +-
 examples/vue/syntax/template-repeat-update.vue  |    2 +-
 examples/vue/syntax/template-repeat.vue         |    8 +-
 flow-typed/npm/animationjs_vx.x.x.js            |   60 +
 flow-typed/npm/babel-core_vx.x.x.js             |  227 +
 flow-typed/npm/babel-eslint_vx.x.x.js           |   73 +
 flow-typed/npm/babel-istanbul_vx.x.x.js         |  353 +
 flow-typed/npm/babel-loader_vx.x.x.js           |   67 +
 flow-typed/npm/babel-plugin-coverage_vx.x.x.js  |   32 +
 flow-typed/npm/babel-preset-es2015_vx.x.x.js    |   32 +
 flow-typed/npm/babel-runtime_vx.x.x.js          | 1691 ++++
 flow-typed/npm/chai_v3.5.x.js                   |  212 +
 flow-typed/npm/chromedriver_vx.x.x.js           |   46 +
 flow-typed/npm/core-js_vx.x.x.js                | 9390 ++++++++++++++++++
 flow-typed/npm/cross-spawn_vx.x.x.js            |   59 +
 flow-typed/npm/css-loader_vx.x.x.js             |   87 +
 flow-typed/npm/cubicbezier_vx.x.x.js            |  109 +
 flow-typed/npm/danger_vx.x.x.js                 |  284 +
 flow-typed/npm/envd_vx.x.x.js                   |  109 +
 flow-typed/npm/eslint-plugin-flowtype_vx.x.x.js |  319 +
 flow-typed/npm/eslint_vx.x.x.js                 | 1978 ++++
 flow-typed/npm/flow-bin_v0.x.x.js               |    6 +
 flow-typed/npm/fs-extra_vx.x.x.js               |  221 +
 flow-typed/npm/http-server_vx.x.x.js            |   39 +
 flow-typed/npm/httpurl_vx.x.x.js                |   67 +
 flow-typed/npm/inline-style-prefixer_vx.x.x.js  |  347 +
 flow-typed/npm/json-loader_vx.x.x.js            |   33 +
 flow-typed/npm/karma-coverage_vx.x.x.js         |   81 +
 flow-typed/npm/karma-mocha-reporter_vx.x.x.js   |   38 +
 flow-typed/npm/karma-mocha_vx.x.x.js            |   53 +
 .../npm/karma-phantomjs-launcher_vx.x.x.js      |   59 +
 flow-typed/npm/karma-sourcemap-loader_vx.x.x.js |   33 +
 flow-typed/npm/karma-webpack_vx.x.x.js          |   45 +
 flow-typed/npm/karma_vx.x.x.js                  |  445 +
 flow-typed/npm/lazyimg_vx.x.x.js                |   32 +
 flow-typed/npm/macaca-cli_vx.x.x.js             |  123 +
 flow-typed/npm/macaca-utils_vx.x.x.js           |   39 +
 flow-typed/npm/mocha_v2.4.x.js                  |   25 +
 flow-typed/npm/modals_vx.x.x.js                 |   81 +
 flow-typed/npm/nightwatch_vx.x.x.js             |  633 ++
 flow-typed/npm/phantomjs-prebuilt_vx.x.x.js     |  389 +
 flow-typed/npm/query-string_vx.x.x.js           |   33 +
 flow-typed/npm/reify_vx.x.x.js                  |   95 +
 flow-typed/npm/rollup-plugin-buble_vx.x.x.js    |   39 +
 flow-typed/npm/rollup-plugin-commonjs_vx.x.x.js |   81 +
 flow-typed/npm/rollup-plugin-eslint_vx.x.x.js   |   39 +
 .../rollup-plugin-flow-no-whitespace_vx.x.x.js  |   33 +
 flow-typed/npm/rollup-plugin-flow_vx.x.x.js     |   33 +
 flow-typed/npm/rollup-plugin-json_vx.x.x.js     |   46 +
 .../npm/rollup-plugin-node-resolve_vx.x.x.js    |   53 +
 flow-typed/npm/rollup-plugin-postcss_vx.x.x.js  |   38 +
 flow-typed/npm/rollup-plugin-replace_vx.x.x.js  |   46 +
 flow-typed/npm/rollup-plugin-uglify_vx.x.x.js   |   32 +
 flow-typed/npm/rollup-watch_vx.x.x.js           |   67 +
 flow-typed/npm/rollup_vx.x.x.js                 |   46 +
 flow-typed/npm/scroll-to_vx.x.x.js              |   33 +
 flow-typed/npm/selenium-server_vx.x.x.js        |   39 +
 flow-typed/npm/semver_v5.1.x.js                 |   81 +
 flow-typed/npm/serve_vx.x.x.js                  |   18 +
 flow-typed/npm/sinon-chai_vx.x.x.js             |   32 +
 flow-typed/npm/sinon_vx.x.x.js                  |  263 +
 flow-typed/npm/uglify-js_vx.x.x.js              |  116 +
 flow-typed/npm/vue-loader_vx.x.x.js             |  122 +
 flow-typed/npm/vue-template-compiler_vx.x.x.js  |   38 +
 flow-typed/npm/vue_vx.x.x.js                    | 1089 ++
 flow-typed/npm/webdriver-client_vx.x.x.js       |  129 +
 flow-typed/npm/webpack_vx.x.x.js                | 1523 +++
 flow-typed/npm/weex-components_vx.x.x.js        |   33 +
 flow-typed/npm/weex-loader_vx.x.x.js            |  108 +
 flow-typed/npm/weex-picker_vx.x.x.js            |   81 +
 flow-typed/npm/weex-rax-framework_vx.x.x.js     |  165 +
 flow-typed/npm/weex-styler_vx.x.x.js            |   66 +
 flow-typed/npm/weex-vdom-tester_vx.x.x.js       |  108 +
 flow-typed/npm/weex-vue-framework_vx.x.x.js     |   33 +
 flow-typed/npm/weex-wd_vx.x.x.js                |   38 +
 flow-typed/npm/wwp_vx.x.x.js                    |   39 +
 flow-typed/npm/xml2map_vx.x.x.js                |   45 +
 html5/frameworks/legacy/app/ctrl/init.js        |   55 +-
 html5/frameworks/legacy/static/create.js        |    5 +-
 html5/frameworks/legacy/static/life.js          |   19 +
 html5/render/browser/extend/api/stream.js       |    2 +-
 html5/render/browser/extend/components/input.js |   33 +
 .../browser/extend/components/textarea.js       |   32 +
 html5/render/browser/utils/index.js             |    9 +
 html5/render/vue/README.md                      |   51 +-
 html5/render/vue/components/a.js                |   18 +-
 html5/render/vue/components/div.js              |   25 +-
 html5/render/vue/components/image.js            |   81 +-
 html5/render/vue/components/index.js            |    9 +-
 html5/render/vue/components/input.js            |   31 +-
 .../render/vue/components/scrollable/header.js  |   40 +-
 .../vue/components/scrollable/list/cell.js      |   15 +-
 .../vue/components/scrollable/list/index.js     |   32 +-
 .../vue/components/scrollable/list/listMixin.js |  118 +-
 .../components/scrollable/loading-indicator.js  |    3 +-
 .../render/vue/components/scrollable/loading.js |   55 +-
 .../render/vue/components/scrollable/refresh.js |   64 +-
 .../vue/components/scrollable/scroller.js       |   30 +-
 .../render/vue/components/scrollable/shared.js  |   22 -
 html5/render/vue/components/slider/index.js     |   40 +-
 html5/render/vue/components/slider/indicator.js |  115 +-
 .../render/vue/components/slider/slideMixin.js  |  141 +-
 html5/render/vue/components/switch.js           |   11 +-
 html5/render/vue/components/text.js             |   45 +-
 html5/render/vue/components/textarea.js         |   29 +-
 html5/render/vue/components/video.js            |   14 +-
 html5/render/vue/components/web.js              |   19 +-
 html5/render/vue/env/WXEnvironment.js           |   39 -
 html5/render/vue/env/index.js                   |   17 +-
 html5/render/vue/env/viewport.js                |   56 +-
 html5/render/vue/env/weex.js                    |   30 +-
 html5/render/vue/env/wx-env.js                  |   48 +
 html5/render/vue/index.js                       |   64 +-
 html5/render/vue/mixins/base.js                 |  110 +-
 html5/render/vue/mixins/event.js                |   76 -
 html5/render/vue/mixins/index.js                |    8 +-
 html5/render/vue/mixins/input-common.js         |   47 +
 html5/render/vue/mixins/scrollable.js           |  110 +
 html5/render/vue/mixins/style.js                |  265 +-
 html5/render/vue/modules/dom.js                 |   69 +-
 html5/render/vue/modules/index.js               |   42 +-
 html5/render/vue/styles/components.css          |  225 +-
 html5/render/vue/styles/reset.css               |   44 +-
 html5/render/vue/utils/component.js             |   83 +-
 html5/render/vue/utils/event.js                 |   91 +-
 html5/render/vue/utils/func.js                  |   81 +-
 html5/render/vue/utils/index.js                 |   55 +-
 html5/render/vue/utils/lazyload.js              |  102 +
 html5/render/vue/utils/perf.js                  |  170 +
 html5/render/vue/utils/style.js                 |   21 +
 html5/render/vue/utils/type.js                  |   20 +
 html5/test/render/index.js                      |    3 -
 html5/test/render/vue/components/a.js           |   38 +
 html5/test/render/vue/components/div.js         |   29 +
 html5/test/render/vue/components/image.js       |   44 +-
 html5/test/render/vue/components/list.js        |   21 +-
 html5/test/render/vue/components/switch.js      |   35 +-
 html5/test/render/vue/components/text.js        |   42 +-
 html5/test/render/vue/components/web.js         |   14 +-
 html5/test/render/vue/examples/list-cell.js     |   16 +-
 html5/test/render/vue/helper.js                 |  157 +-
 html5/test/render/vue/utils.js                  |    1 -
 html5/test/render/vue/validator/check.js        |    1 -
 html5/test/render/vue/validator/index.js        |    1 -
 html5/test/render/vue/validator/prop.js         |    1 -
 html5/test/render/vue/validator/style.js        |    1 -
 index.html                                      |    3 +-
 ios/sdk/WeexSDK.xcodeproj/project.pbxproj       |    8 -
 ios/sdk/WeexSDK/Resources/main.js               |   14 +-
 .../Recycler/WXRecyclerDataController.m         |    2 +-
 .../Component/WXComponent+GradientColor.h       |   21 -
 .../Component/WXComponent+GradientColor.m       |  124 -
 .../Sources/Component/WXComponent_internal.h    |    3 +
 .../Sources/Display/WXComponent+BoxShadow.h     |    2 +-
 .../Sources/Display/WXComponent+BoxShadow.m     |   10 +-
 ios/sdk/WeexSDK/Sources/Display/WXInnerLayer.h  |    2 +-
 ios/sdk/WeexSDK/Sources/Display/WXInnerLayer.m  |    4 +-
 .../WeexSDK/Sources/Layout/WXComponent+Layout.m |    3 +-
 .../Sources/Manager/WXComponentManager.m        |    4 +-
 ios/sdk/WeexSDK/Sources/Model/WXComponent.m     |   29 +-
 ios/sdk/WeexSDK/Sources/Utility/WXBoxShadow.h   |    2 +-
 ios/sdk/WeexSDK/Sources/Utility/WXBoxShadow.m   |   21 +-
 ios/sdk/WeexSDK/Sources/Utility/WXUtility.h     |   27 +
 ios/sdk/WeexSDK/Sources/Utility/WXUtility.m     |  101 +
 .../Sources/View/WXComponent+ViewManagement.m   |    1 -
 ios/sdk/WeexSDK/Sources/WeexSDK.h               |    1 +
 package.json                                    |   33 +-
 packages/weex-vue-render/README.md              |   51 +-
 packages/weex-vue-render/package.json           |   13 +-
 test/ci-funcs.sh                                |    3 +
 test/pages/components/recycler.vue              |   39 +-
 test/pages/image-onload.vue                     |    2 +-
 test/pages/index.vue                            |   10 +-
 test/scripts/components/recycler.test.js        |  134 +-
 test/scripts/index.test.js                      |   14 +-
 vue.html                                        |   53 +-
 314 files changed, 28744 insertions(+), 1781 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/53b61da6/ios/sdk/WeexSDK/Sources/Manager/WXComponentManager.m
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/53b61da6/test/scripts/components/recycler.test.js
----------------------------------------------------------------------
diff --cc test/scripts/components/recycler.test.js
index bbf20a8,6bc67ed..ba75fa8
--- a/test/scripts/components/recycler.test.js
+++ b/test/scripts/components/recycler.test.js
@@@ -11,35 -11,36 +11,37 @@@ var util = require("../util.js")
  const platform = process.env.platform.toLowerCase() || 'android';
  const isAndroid = platform === 'android';
  
- const fixedPath = '//div[1]'
- const header1Path = '//recycler[1]/div[1]/'
- const header2Path = '//recycler[1]/div[2]/'
- const cell1Path = isAndroid ? '//recycler[1]/div[3]/' : '//recycler[1]/cell[1]/'
- const cell2Path = isAndroid ? '//recycler[1]/div[4]/' : '//recycler[1]/cell[2]/'
- const cell3Path = isAndroid ? '//recycler[1]/div[5]/' : '//recycler[1]/cell[3]/'
- const cell4Path = isAndroid ? '//recycler[1]/div[6]/' : '//recycler[1]/cell[4]/'
- const cell27Path = isAndroid ? '//recycler[1]/div[29]/' : '//recycler[1]/cell[27]/'
- const cell28Path = isAndroid ? '//recycler[1]/div[30]/' : '//recycler[1]/cell[28]/'
- const cell29Path = isAndroid ? '//recycler[1]/div[31]/' : '//recycler[1]/cell[29]/'
- const cell30Path = isAndroid ? '//recycler[1]/div[32]/' : '//recycler[1]/cell[30]/'
- const footerPath = '//recycler[1]/div[1]'
+ // const fixedPath = '//div[1]'
+ // const header1Path = '//recycler[1]/div[1]/'
+ // const header2Path = '//recycler[1]/div[2]/'
+ // const cell1Path = isAndroid ? '//recycler[1]/div[3]/' : '//recycler[1]/cell[1]/'
+ // const cell2Path = isAndroid ? '//recycler[1]/div[4]/' : '//recycler[1]/cell[2]/'
+ // const cell3Path = isAndroid ? '//recycler[1]/div[5]/' : '//recycler[1]/cell[3]/'
+ // const cell4Path = isAndroid ? '//recycler[1]/div[6]/' : '//recycler[1]/cell[4]/'
+ // const cell27Path = isAndroid ? '//recycler[1]/div[29]/' : '//recycler[1]/cell[27]/'
+ // const cell28Path = isAndroid ? '//recycler[1]/div[30]/' : '//recycler[1]/cell[28]/'
+ // const cell29Path = isAndroid ? '//recycler[1]/div[31]/' : '//recycler[1]/cell[29]/'
+ // const cell30Path = isAndroid ? '//recycler[1]/div[32]/' : '//recycler[1]/cell[30]/'
+ // const footerPath = '//recycler[1]/div[1]'
  
  const isApproximate = (x, y) =>  {
 -  return Math.abs(x - y) <= 1
 +  return Math.abs(x - y) <= isAndroid ? 1 : 0.5
  }
  
- if (isAndroid) {
-   return;
- }
+ // if (isAndroid) {
+ //   return;
+ // }
  
  describe('recycler', function () {
    this.timeout(util.getTimeoutMills())
    const driver = util.createDriver(wd)
  
    before(function () {
++
+     console.log(util.getPage('/components/recycler.js'))
      return util.init(driver)
        .get(util.getPage('/components/recycler.js'))
-       .waitForElementByXPath('//recycler[1]',util.getGETActionWaitTimeMills(),1000)
+       .waitForElementById('waterfall',util.getGETActionWaitTimeMills(),1000)
    });
  
    after(function () {
@@@ -178,34 -179,34 +180,34 @@@
        cell1Height = rect.height
        assert.isOk(isApproximate(rect.x, 0))
        assert.isOk(isApproximate(rect.y, navBarHeight + 471 * scaleFactor))
 -      assert.isOk(isApproximate(rect.width, 357 * scaleFactor))
 +      assert.isOk(isApproximate(rect.width, 359 * scaleFactor))
      })
-     .elementByXPath(cell2Path)
+      .elementById('cell1')
      .getRect()
      .then((rect)=>{
        console.log(`cell 2 rect after changing column gap to normal:${JSON.stringify(rect)}`)
        cell2Height = rect.height
 -      assert.isOk(isApproximate(rect.x, 393 * scaleFactor))
 +      assert.isOk(isApproximate(rect.x, 391 * scaleFactor))
        assert.isOk(isApproximate(rect.y, navBarHeight + 471 * scaleFactor))
 -      assert.isOk(isApproximate(rect.width, 357 * scaleFactor))
 +      assert.isOk(isApproximate(rect.width, 359 * scaleFactor))
      })
-     .elementByXPath(cell3Path)
+     .elementById('cell2')
      .getRect()
      .then((rect)=>{
        console.log(`cell 3 rect after changing column gap to normal:${JSON.stringify(rect)}`)
 -      assert.isOk(isApproximate(rect.x, 393 * scaleFactor))
 +      assert.isOk(isApproximate(rect.x, 391 * scaleFactor))
        assert.isOk(isApproximate(rect.y, navBarHeight + 471 * scaleFactor + cell2Height))
 -      assert.isOk(isApproximate(rect.width, 357 * scaleFactor))
 +      assert.isOk(isApproximate(rect.width, 359 * scaleFactor))
      })
-     .elementByXPath(cell4Path)
+      .elementById('cell3')
      .getRect()
      .then((rect)=>{
        console.log(`cell 4 rect after changing column gap to normal:${JSON.stringify(rect)}`)
        assert.isOk(isApproximate(rect.x, 0))
        assert.isOk(isApproximate(rect.y, navBarHeight + 471 * scaleFactor + cell1Height))
 -      assert.isOk(isApproximate(rect.width, 357 * scaleFactor))
 +      assert.isOk(isApproximate(rect.width, 359 * scaleFactor))
      })
-     .elementByXPath(cell2Path)
+     .elementById('cell1')
      .click()
    })