get-location.test.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. const PAGE_PATH = "/pages/API/get-location/get-location";
  2. const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
  3. const isAndroid = platformInfo.startsWith('android')
  4. const isIos = platformInfo.startsWith('ios')
  5. const isHarmony = platformInfo.startsWith('harmony')
  6. const isApp = isAndroid || isIos
  7. const isWeb = platformInfo.startsWith('web')
  8. const isMP = platformInfo.startsWith('mp')
  9. describe("get-location", () => {
  10. if (isMP || isWeb) {
  11. // 微信、web harmony 上会有权限弹框,暂时屏蔽测试
  12. it('not support', async () => {
  13. expect(1).toBe(1)
  14. })
  15. return
  16. }
  17. beforeAll(async () => {
  18. page = await program.reLaunch(PAGE_PATH)
  19. await page.waitFor(600)
  20. });
  21. //system 定位
  22. if(!isWeb){
  23. it("system+type=wgs84+success", async () => {
  24. await page.setData({
  25. jest_provider: 'system',
  26. jest_type: 'wgs84',
  27. jest_isAltitude: true,
  28. jest_isGeocode: false,
  29. jest_isHighAccuracy: false
  30. })
  31. await page.callMethod('jestGetLocation')
  32. if (isHarmony) {
  33. await program.tap({x: 100, y: 525})
  34. }
  35. await page.waitFor(async () => {
  36. return await page.data('jest_complete') === true;
  37. });
  38. const data = await page.data()
  39. const jest_errCode = data['jest_errCode']
  40. if (jest_errCode > 0) {
  41. expect((await page.data())['jest_errCode']).toEqual(expect.any(Number));
  42. } else {
  43. //判断经纬度是否在正常范围
  44. expect((await page.data())['jest_longitude']).toBeGreaterThanOrEqual(-180);
  45. expect((await page.data())['jest_longitude']).toBeLessThanOrEqual(180);
  46. expect((await page.data())['jest_latitude']).toBeGreaterThanOrEqual(-90);
  47. expect((await page.data())['jest_latitude']).toBeLessThanOrEqual(90);
  48. //判断海拔是否正确
  49. expect((await page.data())['jest_altitude']).toEqual(expect.any(Number));
  50. }
  51. });
  52. }
  53. //system 定位
  54. it("system+type=wgs84+success+geocode=true", async () => {
  55. await page.setData({
  56. jest_provider: 'system',
  57. jest_type: 'wgs84',
  58. jest_isAltitude: true,
  59. jest_isGeocode: true,
  60. jest_isHighAccuracy: false
  61. })
  62. await page.callMethod('jestGetLocation')
  63. await page.waitFor(async () => {
  64. return await page.data('jest_complete') === true;
  65. });
  66. const data = await page.data()
  67. const jest_errCode = data['jest_errCode']
  68. if (jest_errCode > 0) {
  69. if (isIos) {
  70. expect((await page.data())['jest_errCode']).toEqual(1505603);
  71. } else if (isAndroid) {
  72. expect((await page.data())['jest_errCode']).toEqual(1505700);
  73. } else {
  74. expect((await page.data())['jest_errCode']).toEqual(expect.any(Number));
  75. }
  76. }
  77. });
  78. //system 定位
  79. if(!isWeb){
  80. it("system+type=wgs84+success+altitude=false", async () => {
  81. await page.setData({
  82. jest_provider: 'system',
  83. jest_type: 'wgs84',
  84. jest_isAltitude: false,
  85. jest_isGeocode: true,
  86. jest_isHighAccuracy: false
  87. })
  88. await page.callMethod('jestGetLocation')
  89. await page.waitFor(async () => {
  90. return await page.data('jest_complete') === true;
  91. });
  92. const data = await page.data()
  93. const jest_errCode = data['jest_errCode']
  94. if (jest_errCode > 0) {
  95. //如果定位出错
  96. expect((await page.data())['jest_errCode']).toEqual(expect.any(Number));
  97. } else {
  98. expect((await page.data())['jest_altitude']).toEqual(0);
  99. }
  100. });
  101. }
  102. //system 定位
  103. it("system+type=gcj02+fail", async () => {
  104. await page.setData({
  105. jest_provider: 'system',
  106. jest_type: 'gcj02',
  107. jest_isAltitude: true,
  108. jest_isGeocode: true,
  109. jest_isHighAccuracy: false
  110. })
  111. await page.callMethod('jestGetLocation')
  112. await page.waitFor(async () => {
  113. return await page.data('jest_complete') === true;
  114. });
  115. if (isApp) {
  116. expect((await page.data())['jest_errCode']).toEqual(1505601);
  117. }
  118. });
  119. //tencent 定位
  120. if(!isWeb){
  121. it("tencent+type=gcj02+success", async () => {
  122. await page.setData({
  123. jest_provider: 'tencent',
  124. jest_type: 'gcj02',
  125. jest_isAltitude: true,
  126. jest_isGeocode: true,
  127. jest_isHighAccuracy: true
  128. })
  129. await page.callMethod('jestGetLocation')
  130. await page.waitFor(async () => {
  131. return await page.data('jest_complete') === true;
  132. });
  133. const data = await page.data()
  134. const jest_errCode = data['jest_errCode']
  135. if (jest_errCode > 0) {
  136. //如果定位出错
  137. expect((await page.data())['jest_errCode']).toEqual(expect.any(Number));
  138. } else {
  139. //判断逆地理编码是否正确
  140. expect((await page.data())['jest_address']).toEqual(expect.any(String));
  141. //判断经纬度是否在正常范围
  142. expect((await page.data())['jest_longitude']).toBeGreaterThanOrEqual(-180);
  143. expect((await page.data())['jest_longitude']).toBeLessThanOrEqual(180);
  144. expect((await page.data())['jest_latitude']).toBeGreaterThanOrEqual(-90);
  145. expect((await page.data())['jest_latitude']).toBeLessThanOrEqual(90);
  146. //判断海拔是否正确
  147. expect((await page.data())['jest_altitude']).toEqual(expect.any(Number));
  148. }
  149. });
  150. }
  151. //tencent 定位
  152. it("tencent+type=wgs84+fail", async () => {
  153. await page.setData({
  154. jest_provider: 'tencent',
  155. jest_type: 'wgs84',
  156. jest_isAltitude: true,
  157. jest_isGeocode: true,
  158. jest_isHighAccuracy: true
  159. })
  160. await page.callMethod('jestGetLocation')
  161. await page.waitFor(async () => {
  162. return await page.data('jest_complete') === true;
  163. });
  164. if (isApp) {
  165. expect((await page.data())['jest_errCode']).toEqual(1505607);
  166. }
  167. });
  168. });