提交 b8a83141 编写于 作者: 杜庆泉's avatar 杜庆泉

Merge branch 'alpha' of https://gitcode.net/dcloud/hello-uni-app-x into alpha

...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
<button class="btn" type="button" data-action="navigateBack">navigateBack</button> <button class="btn" type="button" data-action="navigateBack">navigateBack</button>
<button class="btn" type="button" data-action="reLaunch">reLaunch</button> <button class="btn" type="button" data-action="reLaunch">reLaunch</button>
<button class="btn" type="button" data-action="switchTab">switchTab</button> <button class="btn" type="button" data-action="switchTab">switchTab</button>
<button class="btn" type="button" data-action="getEnv">getEnv</button>
</div> </div>
<p class="desc">网页向应用发送消息。注意:小程序端应用会在此页面后退时接收到消息。</p> <p class="desc">网页向应用发送消息。注意:小程序端应用会在此页面后退时接收到消息。</p>
<div class="btn-list"> <div class="btn-list">
...@@ -68,6 +69,13 @@ ...@@ -68,6 +69,13 @@
delta: 1 delta: 1
}); });
break; break;
case 'getEnv':
uni.getEnv((res) => {
uni.postMessage({
data: res
})
});
break;
default: default:
uni[action]({ uni[action]({
url: '/pages/component/button/button' url: '/pages/component/button/button'
......
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e=e||self).uni=n()}(this,(function(){"use strict";try{var e={};Object.defineProperty(e,"passive",{get:function(){!0}}),window.addEventListener("test-passive",null,e)}catch(e){}var n=Object.prototype.hasOwnProperty;function i(e,i){return n.call(e,i)}var t=[];function o(){return window.__dcloud_weex_postMessage||window.__dcloud_weex_}var a=function(e,n){var i={options:{timestamp:+new Date},name:e,arg:n};if(window.__uniapp_x_postMessage||window.__uniapp_x_){if("postMessage"===e){var a={data:n};return window.__uniapp_x_postMessage?window.__uniapp_x_postMessage(a):window.__uniapp_x_.postMessage(JSON.stringify(a))}var r={type:"WEB_INVOKE_APPSERVICE",args:{data:i,webviewIds:t}};window.__uniapp_x_postMessage?window.__uniapp_x_postMessageToService(r):window.__uniapp_x_.postMessageToService(JSON.stringify(r))}else if(o()){if("postMessage"===e){var d={data:[n]};return window.__dcloud_weex_postMessage?window.__dcloud_weex_postMessage(d):window.__dcloud_weex_.postMessage(JSON.stringify(d))}var s={type:"WEB_INVOKE_APPSERVICE",args:{data:i,webviewIds:t}};window.__dcloud_weex_postMessage?window.__dcloud_weex_postMessageToService(s):window.__dcloud_weex_.postMessageToService(JSON.stringify(s))}else{if(!window.plus)return window.parent.postMessage({type:"WEB_INVOKE_APPSERVICE",data:i,pageId:""},"*");if(0===t.length){var w=plus.webview.currentWebview();if(!w)throw new Error("plus.webview.currentWebview() is undefined");var u=w.parent(),g="";g=u?u.id:w.id,t.push(g)}if(plus.webview.getWebviewById("__uniapp__service"))plus.webview.postMessageToUniNView({type:"WEB_INVOKE_APPSERVICE",args:{data:i,webviewIds:t}},"__uniapp__service");else{var v=JSON.stringify(i);plus.webview.getLaunchWebview().evalJS('UniPlusBridge.subscribeHandler("'.concat("WEB_INVOKE_APPSERVICE",'",').concat(v,",").concat(JSON.stringify(t),");"))}}},r={navigateTo:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;a("navigateTo",{url:encodeURI(n)})},navigateBack:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.delta;a("navigateBack",{delta:parseInt(n)||1})},switchTab:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;a("switchTab",{url:encodeURI(n)})},reLaunch:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;a("reLaunch",{url:encodeURI(n)})},redirectTo:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;a("redirectTo",{url:encodeURI(n)})},getEnv:function(e){o()?e({nvue:!0}):window.plus?e({plus:!0}):e({h5:!0})},postMessage:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};a("postMessage",e.data||{})}},d=/uni-app/i.test(navigator.userAgent),s=/Html5Plus/i.test(navigator.userAgent),w=/complete|loaded|interactive/;var u=window.my&&navigator.userAgent.indexOf(["t","n","e","i","l","C","y","a","p","i","l","A"].reverse().join(""))>-1;var g=window.swan&&window.swan.webView&&/swan/i.test(navigator.userAgent);var v=window.qq&&window.qq.miniProgram&&/QQ/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var c=window.tt&&window.tt.miniProgram&&/toutiaomicroapp/i.test(navigator.userAgent);var p=window.wx&&window.wx.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var _=window.qa&&/quickapp/i.test(navigator.userAgent);var m=window.ks&&window.ks.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var f=window.tt&&window.tt.miniProgram&&/Lark|Feishu/i.test(navigator.userAgent);var l=window.jd&&window.jd.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var E=window.xhs&&window.xhs.miniProgram&&/xhsminiapp/i.test(navigator.userAgent);for(var x,S=function(){window.UniAppJSBridge=!0,document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady",{bubbles:!0,cancelable:!0}))},h=[function(e){if(d||s)return window.__uniapp_x_postMessage||window.__uniapp_x_||window.__dcloud_weex_postMessage||window.__dcloud_weex_?document.addEventListener("DOMContentLoaded",e):window.plus&&w.test(document.readyState)?setTimeout(e,0):document.addEventListener("plusready",e),r},function(e){if(p)return window.WeixinJSBridge&&window.WeixinJSBridge.invoke?setTimeout(e,0):document.addEventListener("WeixinJSBridgeReady",e),window.wx.miniProgram},function(e){if(v)return window.QQJSBridge&&window.QQJSBridge.invoke?setTimeout(e,0):document.addEventListener("QQJSBridgeReady",e),window.qq.miniProgram},function(e){if(u){document.addEventListener("DOMContentLoaded",e);var n=window.my;return{navigateTo:n.navigateTo,navigateBack:n.navigateBack,switchTab:n.switchTab,reLaunch:n.reLaunch,redirectTo:n.redirectTo,postMessage:n.postMessage,getEnv:n.getEnv}}},function(e){if(g)return document.addEventListener("DOMContentLoaded",e),window.swan.webView},function(e){if(c)return document.addEventListener("DOMContentLoaded",e),window.tt.miniProgram},function(e){if(_){window.QaJSBridge&&window.QaJSBridge.invoke?setTimeout(e,0):document.addEventListener("QaJSBridgeReady",e);var n=window.qa;return{navigateTo:n.navigateTo,navigateBack:n.navigateBack,switchTab:n.switchTab,reLaunch:n.reLaunch,redirectTo:n.redirectTo,postMessage:n.postMessage,getEnv:n.getEnv}}},function(e){if(m)return window.WeixinJSBridge&&window.WeixinJSBridge.invoke?setTimeout(e,0):document.addEventListener("WeixinJSBridgeReady",e),window.ks.miniProgram},function(e){if(f)return document.addEventListener("DOMContentLoaded",e),window.tt.miniProgram},function(e){if(l)return window.JDJSBridgeReady&&window.JDJSBridgeReady.invoke?setTimeout(e,0):document.addEventListener("JDJSBridgeReady",e),window.jd.miniProgram},function(e){if(E)return window.xhs.miniProgram},function(e){return document.addEventListener("DOMContentLoaded",e),r}],y=0;y<h.length&&!(x=h[y](S));y++);x||(x={});var M="undefined"!=typeof uni?uni:{};if(!M.navigateTo)for(var P in x)i(x,P)&&(M[P]=x[P]);return M.webView=x,M})); !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e=e||self).uni=n()}(this,(function(){"use strict";try{var e={};Object.defineProperty(e,"passive",{get:function(){!0}}),window.addEventListener("test-passive",null,e)}catch(e){}var n=Object.prototype.hasOwnProperty;function i(e,i){return n.call(e,i)}var t=[];function o(){return window.__dcloud_weex_postMessage||window.__dcloud_weex_}function a(){return window.__uniapp_x_postMessage||window.__uniapp_x_}var r=function(e,n){var i={options:{timestamp:+new Date},name:e,arg:n};if(a()){if("postMessage"===e){var r={data:n};return window.__uniapp_x_postMessage?window.__uniapp_x_postMessage(r):window.__uniapp_x_.postMessage(JSON.stringify(r))}var d={type:"WEB_INVOKE_APPSERVICE",args:{data:i,webviewIds:t}};window.__uniapp_x_postMessage?window.__uniapp_x_postMessageToService(d):window.__uniapp_x_.postMessageToService(JSON.stringify(d))}else if(o()){if("postMessage"===e){var s={data:[n]};return window.__dcloud_weex_postMessage?window.__dcloud_weex_postMessage(s):window.__dcloud_weex_.postMessage(JSON.stringify(s))}var w={type:"WEB_INVOKE_APPSERVICE",args:{data:i,webviewIds:t}};window.__dcloud_weex_postMessage?window.__dcloud_weex_postMessageToService(w):window.__dcloud_weex_.postMessageToService(JSON.stringify(w))}else{if(!window.plus)return window.parent.postMessage({type:"WEB_INVOKE_APPSERVICE",data:i,pageId:""},"*");if(0===t.length){var u=plus.webview.currentWebview();if(!u)throw new Error("plus.webview.currentWebview() is undefined");var g=u.parent(),v="";v=g?g.id:u.id,t.push(v)}if(plus.webview.getWebviewById("__uniapp__service"))plus.webview.postMessageToUniNView({type:"WEB_INVOKE_APPSERVICE",args:{data:i,webviewIds:t}},"__uniapp__service");else{var c=JSON.stringify(i);plus.webview.getLaunchWebview().evalJS('UniPlusBridge.subscribeHandler("'.concat("WEB_INVOKE_APPSERVICE",'",').concat(c,",").concat(JSON.stringify(t),");"))}}},d={navigateTo:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;r("navigateTo",{url:encodeURI(n)})},navigateBack:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.delta;r("navigateBack",{delta:parseInt(n)||1})},switchTab:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;r("switchTab",{url:encodeURI(n)})},reLaunch:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;r("reLaunch",{url:encodeURI(n)})},redirectTo:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;r("redirectTo",{url:encodeURI(n)})},getEnv:function(e){a()?e({uvue:!0}):o()?e({nvue:!0}):window.plus?e({plus:!0}):e({h5:!0})},postMessage:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r("postMessage",e.data||{})}},s=/uni-app/i.test(navigator.userAgent),w=/Html5Plus/i.test(navigator.userAgent),u=/complete|loaded|interactive/;var g=window.my&&navigator.userAgent.indexOf(["t","n","e","i","l","C","y","a","p","i","l","A"].reverse().join(""))>-1;var v=window.swan&&window.swan.webView&&/swan/i.test(navigator.userAgent);var c=window.qq&&window.qq.miniProgram&&/QQ/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var p=window.tt&&window.tt.miniProgram&&/toutiaomicroapp/i.test(navigator.userAgent);var _=window.wx&&window.wx.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var m=window.qa&&/quickapp/i.test(navigator.userAgent);var f=window.ks&&window.ks.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var l=window.tt&&window.tt.miniProgram&&/Lark|Feishu/i.test(navigator.userAgent);var E=window.jd&&window.jd.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var x=window.xhs&&window.xhs.miniProgram&&/xhsminiapp/i.test(navigator.userAgent);for(var S,h=function(){window.UniAppJSBridge=!0,document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady",{bubbles:!0,cancelable:!0}))},y=[function(e){if(s||w)return window.__uniapp_x_postMessage||window.__uniapp_x_||window.__dcloud_weex_postMessage||window.__dcloud_weex_?document.addEventListener("DOMContentLoaded",e):window.plus&&u.test(document.readyState)?setTimeout(e,0):document.addEventListener("plusready",e),d},function(e){if(_)return window.WeixinJSBridge&&window.WeixinJSBridge.invoke?setTimeout(e,0):document.addEventListener("WeixinJSBridgeReady",e),window.wx.miniProgram},function(e){if(c)return window.QQJSBridge&&window.QQJSBridge.invoke?setTimeout(e,0):document.addEventListener("QQJSBridgeReady",e),window.qq.miniProgram},function(e){if(g){document.addEventListener("DOMContentLoaded",e);var n=window.my;return{navigateTo:n.navigateTo,navigateBack:n.navigateBack,switchTab:n.switchTab,reLaunch:n.reLaunch,redirectTo:n.redirectTo,postMessage:n.postMessage,getEnv:n.getEnv}}},function(e){if(v)return document.addEventListener("DOMContentLoaded",e),window.swan.webView},function(e){if(p)return document.addEventListener("DOMContentLoaded",e),window.tt.miniProgram},function(e){if(m){window.QaJSBridge&&window.QaJSBridge.invoke?setTimeout(e,0):document.addEventListener("QaJSBridgeReady",e);var n=window.qa;return{navigateTo:n.navigateTo,navigateBack:n.navigateBack,switchTab:n.switchTab,reLaunch:n.reLaunch,redirectTo:n.redirectTo,postMessage:n.postMessage,getEnv:n.getEnv}}},function(e){if(f)return window.WeixinJSBridge&&window.WeixinJSBridge.invoke?setTimeout(e,0):document.addEventListener("WeixinJSBridgeReady",e),window.ks.miniProgram},function(e){if(l)return document.addEventListener("DOMContentLoaded",e),window.tt.miniProgram},function(e){if(E)return window.JDJSBridgeReady&&window.JDJSBridgeReady.invoke?setTimeout(e,0):document.addEventListener("JDJSBridgeReady",e),window.jd.miniProgram},function(e){if(x)return window.xhs.miniProgram},function(e){return document.addEventListener("DOMContentLoaded",e),d}],M=0;M<y.length&&!(S=y[M](h));M++);S||(S={});var P="undefined"!=typeof uni?uni:{};if(!P.navigateTo)for(var b in S)i(S,b)&&(P[b]=S[b]);return P.webView=S,P}));
...@@ -263,6 +263,18 @@ ...@@ -263,6 +263,18 @@
"enablePullDownRefresh": true "enablePullDownRefresh": true
} }
}, },
{
"path": "pages/API/navigator/new-page/new-page-3",
"style": {
"navigationBarTitleText": "新页面-3"
}
},
{
"path": "pages/API/navigator/new-page/onLoad",
"style": {
"navigationBarTitleText": "onLoad 生命周期测试"
}
},
{ {
"path": "pages/API/pull-down-refresh/pull-down-refresh", "path": "pages/API/pull-down-refresh/pull-down-refresh",
"style": { "style": {
...@@ -939,13 +951,13 @@ ...@@ -939,13 +951,13 @@
"style": { "style": {
"navigationBarTitleText": "自定义TabBar" "navigationBarTitleText": "自定义TabBar"
} }
}, { },
{
"path": "pages/API/facial-recognition-verify/facial-recognition-verify", "path": "pages/API/facial-recognition-verify/facial-recognition-verify",
"style": { "style": {
"navigationBarTitleText": "", "navigationBarTitleText": "",
"enablePullDownRefresh": false "enablePullDownRefresh": false
} }
} }
], ],
"globalStyle": { "globalStyle": {
......
...@@ -39,6 +39,11 @@ export default { ...@@ -39,6 +39,11 @@ export default {
}, },
}) })
}, },
navigateToOnLoadWithType(type: string) {
uni.navigateTo({
url: `/pages/API/navigator/new-page/onLoad?type=${type}`,
})
}
}, },
} }
</script> </script>
<template>
<view class="uni-padding-wrap">
<page-head title="new-page-3" />
</view>
</template>
jest.setTimeout(20000);
const PAGE_PATH = "/pages/API/navigator/new-page/onLoad";
const INTERMEDIATE_PAGE_PATH = "/pages/API/navigator/new-page/new-page-1";
const TARGET_PAGE_PATH = "/pages/API/navigator/new-page/new-page-3";
let page;
describe("onLoad", () => {
it("adjustData", async () => {
page = await program.reLaunch(INTERMEDIATE_PAGE_PATH);
await page.waitFor(500);
await page.callMethod("navigateToOnLoadWithType", "adjustData");
await page.waitFor(1000);
const image = await program.screenshot();
expect(image).toMatchImageSnapshot();
});
it("navigateTo", async () => {
page = await program.reLaunch(INTERMEDIATE_PAGE_PATH);
await page.waitFor(500);
await page.callMethod("navigateToOnLoadWithType", "navigateTo");
await page.waitFor(1000);
page = await program.currentPage();
expect(page.path).toBe(TARGET_PAGE_PATH.substring(1));
});
it("navigateBack", async () => {
page = await program.reLaunch(INTERMEDIATE_PAGE_PATH);
await page.waitFor(500);
await page.callMethod("navigateToOnLoadWithType", "navigateBack");
await page.waitFor(1000);
page = await program.currentPage();
expect(page.path).toBe(INTERMEDIATE_PAGE_PATH.substring(1));
});
it("redirectTo", async () => {
page = await program.reLaunch(INTERMEDIATE_PAGE_PATH);
await page.waitFor(500);
await page.callMethod("navigateToOnLoadWithType", "redirectTo");
await page.waitFor(1000);
page = await program.currentPage();
expect(page.path).toBe(TARGET_PAGE_PATH.substring(1));
});
it("reLaunch", async () => {
page = await program.reLaunch(INTERMEDIATE_PAGE_PATH);
await page.waitFor(500);
await page.callMethod("navigateToOnLoadWithType", "reLaunch");
await page.waitFor(1000);
page = await program.currentPage();
expect(page.path).toBe(TARGET_PAGE_PATH.substring(1));
});
it("switchTab", async () => {
page = await program.reLaunch(INTERMEDIATE_PAGE_PATH);
await page.waitFor(500);
await page.callMethod("navigateToOnLoadWithType", "switchTab");
await page.waitFor(1000);
page = await program.currentPage();
expect(page.path).toBe("pages/tabBar/component");
});
// toast 出现在 INTERMEDIATE_PAGE_PATH 页面(非 onLoad 生命周期所在页面)
// 当 navigateTo 到 onLoad 页面时,toast 会被关闭
// it("showToast", async () => {
// page = await program.reLaunch(INTERMEDIATE_PAGE_PATH);
// await page.waitFor(500);
// await page.callMethod("navigateToOnLoadWithType", "showToast");
// await page.waitFor(1000);
// const image = await program.screenshot();
// expect(image).toMatchImageSnapshot();
// });
// 同 toast
// it("showLoading", async () => {
// page = await program.reLaunch(INTERMEDIATE_PAGE_PATH);
// await page.waitFor(500);
// await page.callMethod("navigateToOnLoadWithType", "showLoading");
// await page.waitFor(1000);
// const image = await program.screenshot();
// expect(image).toMatchImageSnapshot();
// });
// 同 toast
// it("showModal", async () => {
// page = await program.reLaunch(INTERMEDIATE_PAGE_PATH);
// await page.waitFor(500);
// await page.callMethod("navigateToOnLoadWithType", "showModal");
// await page.waitFor(1000);
// const image = await program.screenshot();
// expect(image).toMatchImageSnapshot();
// });
// 同 toast
// it("showActionSheet", async () => {
// page = await program.reLaunch(INTERMEDIATE_PAGE_PATH);
// await page.waitFor(500);
// await page.callMethod("navigateToOnLoadWithType", "showActionSheet");
// await page.waitFor(1000);
// const image = await program.screenshot();
// expect(image).toMatchImageSnapshot();
// });
});
<template>
<view class="uni-padding-wrap">
<page-head title="onLoad 生命周期调用 uni api 测试" />
<text v-if="isTrue">v-if with true</text>
<text v-if="isFalse">v-if with false</text>
<text v-show="isTrue">v-show with true</text>
<text v-show="isFalse">v-show with false</text>
<text>msg: {{ msg }}</text>
</view>
</template>
<script lang="uts">
export default {
data() {
return {
isTrue: false,
isFalse: true,
msg: 'default msg'
}
},
onLoad(options: OnLoadOptions) {
const type = options.get('type')
switch (type) {
case 'adjustData':
this.adjustData()
break;
case 'navigateTo':
this.navigateTo()
break;
case 'navigateBack':
this.navigateBack()
break;
case 'redirectTo':
this.redirectTo()
break;
case 'reLaunch':
this.reLaunch()
break;
case 'switchTab':
this.switchTab()
break;
case 'showToast':
this.showToast()
break;
case 'showLoading':
this.showLoading()
break;
case 'showModal':
this.showModal()
break;
case 'showActionSheet':
this.showActionSheet()
break;
}
},
methods: {
adjustData(){
this.isTrue = true
this.isFalse = false
this.msg = 'new msg'
},
navigateTo(){
uni.navigateTo({
url: '/pages/API/navigator/new-page/new-page-3'
})
},
navigateBack(){
uni.navigateBack()
},
redirectTo(){
uni.redirectTo({
url: '/pages/API/navigator/new-page/new-page-3'
})
},
reLaunch(){
uni.reLaunch({
url: '/pages/API/navigator/new-page/new-page-3'
})
},
switchTab(){
uni.switchTab({
url: '/pages/tabBar/component'
})
},
showToast(){
uni.showToast({
title: 'test title',
icon: 'success',
duration: 2000
})
},
showLoading(){
uni.showLoading({
title: 'test title',
})
},
showModal(){
uni.showModal({
title: 'test title',
content: 'test content',
})
},
showActionSheet(){
uni.showActionSheet({
title: 'test title',
itemList: ['1', '2', '3']
})
}
}
}
</script>
...@@ -13,7 +13,9 @@ describe('page-scroll-to', () => { ...@@ -13,7 +13,9 @@ describe('page-scroll-to', () => {
await page.waitFor(300) await page.waitFor(300)
const scrollTop = await page.scrollTop() const scrollTop = await page.scrollTop()
expect(scrollTop).toBe(100)
// 设备精度问题,允许上下浮动 1px
expect(scrollTop > 99 && scrollTop < 101).toBe(true)
}) })
it('scroll-to-element', async () => { it('scroll-to-element', async () => {
const btnScrollTo = await page.$('.btn-scrollToElement') const btnScrollTo = await page.$('.btn-scrollToElement')
......
...@@ -32,6 +32,23 @@ describe('ExtApi-StorageInfoTest', () => { ...@@ -32,6 +32,23 @@ describe('ExtApi-StorageInfoTest', () => {
await page.waitFor(600) await page.waitFor(600)
expect(await getData('apiGetData')).toEqual("长安大道连狭斜,青牛白马七香车。玉辇纵横过主第,金鞭络绎向侯家。龙衔宝盖承朝日,凤吐流苏带晚霞。百尺游丝争绕树,一群娇鸟共啼花。游蜂戏蝶千门侧,碧树银台万种色。复道交窗作合欢,双阙连甍垂凤翼。") expect(await getData('apiGetData')).toEqual("长安大道连狭斜,青牛白马七香车。玉辇纵横过主第,金鞭络绎向侯家。龙衔宝盖承朝日,凤吐流苏带晚霞。百尺游丝争绕树,一群娇鸟共啼花。游蜂戏蝶千门侧,碧树银台万种色。复道交窗作合欢,双阙连甍垂凤翼。")
// 测试 clear
let btnGetStorageInfoASyncButton = await page.$('.btn-getStorageInfoASync')
await btnGetStorageInfoASyncButton.tap()
await page.waitFor(600)
storageInfoRet = await getData('apiGetData')
expect(storageInfoRet.keys[0]).toEqual("autotest_key_mock")
const btnClearStorageInfoASyncButton = await page.$('.btn-clearStorageInfoASync')
await btnClearStorageInfoASyncButton.tap()
page.waitFor(600)
await btnGetStorageInfoASyncButton.tap()
await page.waitFor(600)
storageInfoRet = await getData('apiGetData')
expect(storageInfoRet.keys.length).toEqual(0)
await page.setData({ await page.setData({
key: "autotest_key_mock", key: "autotest_key_mock",
data:1100.8989 data:1100.8989
...@@ -43,6 +60,23 @@ describe('ExtApi-StorageInfoTest', () => { ...@@ -43,6 +60,23 @@ describe('ExtApi-StorageInfoTest', () => {
await page.waitFor(600) await page.waitFor(600)
expect(await getData('apiGetData')).toEqual(1100.8989) expect(await getData('apiGetData')).toEqual(1100.8989)
// 测试 remove
await btnGetStorageInfoASyncButton.tap()
await page.waitFor(600)
storageInfoRet = await getData('apiGetData')
expect(storageInfoRet.keys[0]).toEqual("autotest_key_mock")
const btnRemoveStorageInfoASyncButton = await page.$('.btn-removeStorageInfoASync')
await btnRemoveStorageInfoASyncButton.tap()
page.waitFor(600)
await btnGetStorageInfoASyncButton.tap()
await page.waitFor(600)
storageInfoRet = await getData('apiGetData')
expect(storageInfoRet.keys.length).toEqual(0)
await page.setData({ await page.setData({
key: "autotest_key_mock", key: "autotest_key_mock",
data:123456789 data:123456789
...@@ -71,16 +105,20 @@ describe('ExtApi-StorageInfoTest', () => { ...@@ -71,16 +105,20 @@ describe('ExtApi-StorageInfoTest', () => {
await page.setData({ await page.setData({
key: "autotest_key_mock", key: "autotest_key_mock",
data:"长安大道连狭斜,青牛白马七香车。玉辇纵横过主第,金鞭络绎向侯家。龙衔宝盖承朝日,凤吐流苏带晚霞。百尺游丝争绕树,一群娇鸟共啼花。游蜂戏蝶千门侧,碧树银台万种色。复道交窗作合欢,双阙连甍垂凤翼。" data:{
name:"zhangsan",
age:122
}
}) })
await page.waitFor(600) await page.waitFor(600)
const btnSetStorageButtonInfo2 = await page.$('.btn-setstorageSync') await btnSetStorageButtonInfo.tap()
await btnSetStorageButtonInfo2.tap()
await page.waitFor(600) await page.waitFor(600)
const btnGetStorageButtonInfo2 = await page.$('.btn-getstorageSync') await btnGetStorageButtonInfo.tap()
await btnGetStorageButtonInfo2.tap()
await page.waitFor(600) await page.waitFor(600)
expect(await getData('apiGetData')).toEqual("长安大道连狭斜,青牛白马七香车。玉辇纵横过主第,金鞭络绎向侯家。龙衔宝盖承朝日,凤吐流苏带晚霞。百尺游丝争绕树,一群娇鸟共啼花。游蜂戏蝶千门侧,碧树银台万种色。复道交窗作合欢,双阙连甍垂凤翼。") let objRet = await getData('apiGetData')
expect(objRet.age).toEqual(122)
}); });
...@@ -93,14 +131,95 @@ describe('ExtApi-StorageInfoTest', () => { ...@@ -93,14 +131,95 @@ describe('ExtApi-StorageInfoTest', () => {
data:"长安大道连狭斜,青牛白马七香车。玉辇纵横过主第,金鞭络绎向侯家。龙衔宝盖承朝日,凤吐流苏带晚霞。百尺游丝争绕树,一群娇鸟共啼花。游蜂戏蝶千门侧,碧树银台万种色。复道交窗作合欢,双阙连甍垂凤翼。" data:"长安大道连狭斜,青牛白马七香车。玉辇纵横过主第,金鞭络绎向侯家。龙衔宝盖承朝日,凤吐流苏带晚霞。百尺游丝争绕树,一群娇鸟共啼花。游蜂戏蝶千门侧,碧树银台万种色。复道交窗作合欢,双阙连甍垂凤翼。"
}) })
await page.waitFor(600) await page.waitFor(600)
const btnSetStorageButtonInfo = await page.$('.btn-setstorageSync') let btnSetStorageButtonInfo = await page.$('.btn-setstorageSync')
await btnSetStorageButtonInfo.tap() await btnSetStorageButtonInfo.tap()
await page.waitFor(600) await page.waitFor(600)
const btnGetStorageButtonInfo = await page.$('.btn-getstorageSync') let btnGetStorageButtonInfo = await page.$('.btn-getstorageSync')
await btnGetStorageButtonInfo.tap() await btnGetStorageButtonInfo.tap()
await page.waitFor(600) await page.waitFor(600)
expect(await getData('apiGetData')).toEqual("长安大道连狭斜,青牛白马七香车。玉辇纵横过主第,金鞭络绎向侯家。龙衔宝盖承朝日,凤吐流苏带晚霞。百尺游丝争绕树,一群娇鸟共啼花。游蜂戏蝶千门侧,碧树银台万种色。复道交窗作合欢,双阙连甍垂凤翼。") expect(await getData('apiGetData')).toEqual("长安大道连狭斜,青牛白马七香车。玉辇纵横过主第,金鞭络绎向侯家。龙衔宝盖承朝日,凤吐流苏带晚霞。百尺游丝争绕树,一群娇鸟共啼花。游蜂戏蝶千门侧,碧树银台万种色。复道交窗作合欢,双阙连甍垂凤翼。")
// 测试clear
const btnGetStorageInfoSyncButton = await page.$('.btn-getStorageInfoSync')
await btnGetStorageInfoSyncButton.tap()
await page.waitFor(600)
let storageInfoRet = await getData('apiGetData')
expect(storageInfoRet.keys[0]).toEqual("autotest_key_mock")
const btnClearStorageInfoSyncButton = await page.$('.btn-clearStorageInfoSync')
await btnClearStorageInfoSyncButton.tap()
await btnGetStorageInfoSyncButton.tap()
await page.waitFor(600)
storageInfoRet = await getData('apiGetData')
expect(storageInfoRet.keys.length).toEqual(0)
await page.setData({
key: "autotest_key_mock",
data:12345789.235689
})
await page.waitFor(600)
btnSetStorageButtonInfo = await page.$('.btn-setstorageSync')
await btnSetStorageButtonInfo.tap()
await page.waitFor(600)
btnGetStorageButtonInfo = await page.$('.btn-getstorageSync')
await btnGetStorageButtonInfo.tap()
await page.waitFor(600)
expect(await getData('apiGetData')).toEqual(12345789.235689)
// 测试 remove
await btnGetStorageInfoSyncButton.tap()
await page.waitFor(600)
storageInfoRet = await getData('apiGetData')
expect(storageInfoRet.keys[0]).toEqual("autotest_key_mock")
const btnRemoveStorageInfoSyncButton = await page.$('.btn-removeStorageInfoSync')
await btnRemoveStorageInfoSyncButton.tap()
page.waitFor(600)
await btnGetStorageInfoSyncButton.tap()
await page.waitFor(600)
storageInfoRet = await getData('apiGetData')
expect(storageInfoRet.keys.length).toEqual(0)
await page.setData({
key: "autotest_key_mock",
data:0
})
await page.waitFor(600)
btnSetStorageButtonInfo = await page.$('.btn-setstorageSync')
await btnSetStorageButtonInfo.tap()
await page.waitFor(600)
btnGetStorageButtonInfo = await page.$('.btn-getstorageSync')
await btnGetStorageButtonInfo.tap()
await page.waitFor(600)
expect(await getData('apiGetData')).toEqual(0)
await page.setData({
key: "autotest_key_mock",
data:{
name:"tom",
age:10
}
})
await page.waitFor(600)
btnSetStorageButtonInfo = await page.$('.btn-setstorageSync')
await btnSetStorageButtonInfo.tap()
await page.waitFor(600)
btnGetStorageButtonInfo = await page.$('.btn-getstorageSync')
await btnGetStorageButtonInfo.tap()
await page.waitFor(600)
let objRet = await getData('apiGetData')
expect(objRet.name).toEqual("tom")
}); });
}); });
...@@ -39,12 +39,12 @@ ...@@ -39,12 +39,12 @@
</view> </view>
<view class="uni-padding-wrap"> <view class="uni-padding-wrap">
<view class="uni-btn-v"> <view class="uni-btn-v">
<button class="uni-btn" type="primary" @tap="getStorageInfo"> <button class="uni-btn btn-getStorageInfoASync" type="primary" @tap="getStorageInfo">
获取存储概述-同步
</button>
<button class="uni-btn" @tap="getStorageInfoSync">
获取存储概述-异步 获取存储概述-异步
</button> </button>
<button class="uni-btn btn-getStorageInfoSync" @tap="getStorageInfoSync">
获取存储概述-同步
</button>
</view> </view>
<text>{{ storageInfo }}</text> <text>{{ storageInfo }}</text>
<view class="uni-flex uni-row"> <view class="uni-flex uni-row">
...@@ -90,8 +90,8 @@ ...@@ -90,8 +90,8 @@
存储数据-异步 存储数据-异步
</button> </button>
<button class="uni-btn btn-getstorageAsync" @tap="getStorage">读取数据-异步</button> <button class="uni-btn btn-getstorageAsync" @tap="getStorage">读取数据-异步</button>
<button class="uni-btn" @tap="removeStorage">移除数据-异步</button> <button class="uni-btn btn-removeStorageInfoASync" @tap="removeStorage">移除数据-异步</button>
<button class="uni-btn" @tap="clearStorage">清理数据-异步</button> <button class="uni-btn btn-clearStorageInfoASync" @tap="clearStorage">清理数据-异步</button>
</view> </view>
<view class="uni-btn-v"> <view class="uni-btn-v">
...@@ -103,10 +103,10 @@ ...@@ -103,10 +103,10 @@
存储数据-同步 存储数据-同步
</button> </button>
<button class="uni-btn btn-getstorageSync" @tap="getStorageSync">读取数据-同步</button> <button class="uni-btn btn-getstorageSync" @tap="getStorageSync">读取数据-同步</button>
<button class="uni-btn" @tap="removeStorageSync"> <button class="uni-btn btn-removeStorageInfoSync" @tap="removeStorageSync">
移除数据-同步 移除数据-同步
</button> </button>
<button class="uni-btn" @tap="clearStorageSync"> <button class="uni-btn btn-clearStorageInfoSync" @tap="clearStorageSync">
清理数据-同步 清理数据-同步
</button> </button>
</view> </view>
...@@ -132,6 +132,7 @@ export default { ...@@ -132,6 +132,7 @@ export default {
getStorageInfo() { getStorageInfo() {
uni.getStorageInfo({ uni.getStorageInfo({
success: function (res) { success: function (res) {
this.apiGetData = res
this.storageInfo = JSON.stringify(res) this.storageInfo = JSON.stringify(res)
}, },
}) })
...@@ -139,6 +140,7 @@ export default { ...@@ -139,6 +140,7 @@ export default {
getStorageInfoSync() { getStorageInfoSync() {
try { try {
const res = uni.getStorageInfoSync() const res = uni.getStorageInfoSync()
this.apiGetData = res
this.storageInfo = JSON.stringify(res) this.storageInfo = JSON.stringify(res)
} catch (e) { } catch (e) {
// error // error
...@@ -196,9 +198,17 @@ export default { ...@@ -196,9 +198,17 @@ export default {
key: key, key: key,
success: (res) => { success: (res) => {
that.apiGetData = res.data that.apiGetData = res.data
let desc:string = typeof this.apiGetData
if("object" == desc){
desc = desc + ": " + JSON.stringify(this.apiGetData)
}else{
desc = desc + ": " + this.apiGetData
}
uni.showModal({ uni.showModal({
title: '读取数据成功', title: '读取数据成功',
content: "data: '" + JSON.stringify(that.apiGetData) + "'", content: desc,
showCancel: false, showCancel: false,
}) })
}, },
...@@ -222,9 +232,17 @@ export default { ...@@ -222,9 +232,17 @@ export default {
}) })
} else { } else {
this.apiGetData = uni.getStorageSync(key) this.apiGetData = uni.getStorageSync(key)
let desc:string = typeof this.apiGetData
if("object" == desc){
desc = desc + ": " + JSON.stringify(this.apiGetData)
}else{
desc = desc + ": " + this.apiGetData
}
uni.showModal({ uni.showModal({
title: '读取数据成功', title: '读取数据成功',
content: "data: '" + JSON.stringify(apiGetData) + "'", content: desc,
showCancel: false, showCancel: false,
}) })
} }
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<!-- 暂时分成两个方向不同的滚动视图,原因为:scroll-x或scroll-y属性一经设置不能动态改变。 --> <!-- 暂时分成两个方向不同的滚动视图,原因为:scroll-x或scroll-y属性一经设置不能动态改变。 -->
<scroll-view v-if="scrollX" :scroll-x="true" :scroll-y="false" :scroll-top="scrollTop" :scroll-left="scrollLeft" <scroll-view v-if="scrollX" :scroll-x="true" :scroll-y="false" :scroll-top="scrollTop" :scroll-left="scrollLeft"
:upper-threshold="upperThreshold" :lower-threshold="lowerThreshold" :scroll-into-view="scrollIntoView" :upper-threshold="upperThreshold" :lower-threshold="lowerThreshold" :scroll-into-view="scrollIntoView"
:enable-back-to-top="enableBackToTop" :scroll-with-animation="scrollWithAnimation" :enable-back-to-top="enableBackToTop" :scroll-with-animation="scrollWithAnimation" style="flex-direction: row;"
:show-scrollbar="showScrollbar" :rebound="rebound" @scrolltoupper="scrolltoupper" :show-scrollbar="showScrollbar" :rebound="rebound" @scrolltoupper="scrolltoupper"
@scrolltolower="scrolltolower" @scroll="scroll" @scrollend="scrollend" ref="scrollViewX" id="scrollViewX"> @scrolltolower="scrolltolower" @scroll="scroll" @scrollend="scrollend" ref="scrollViewX" id="scrollViewX">
<view class="item" :id="'horizontal_'+item.id" v-for="(item,_) in items"> <view class="item" :id="'horizontal_'+item.id" v-for="(item,_) in items">
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册