@internetarchive/bookreader 5.0.0-9-multiple-files → 5.0.0-90

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/.eslintrc.js +21 -19
  2. package/.github/workflows/node.js.yml +81 -7
  3. package/.github/workflows/npm-publish.yml +6 -20
  4. package/.testcaferc.js +10 -0
  5. package/BookReader/BookReader.css +505 -1442
  6. package/BookReader/BookReader.js +2 -21564
  7. package/BookReader/BookReader.js.LICENSE.txt +20 -20
  8. package/BookReader/BookReader.js.map +1 -1
  9. package/BookReader/ia-bookreader-bundle.js +1782 -0
  10. package/BookReader/ia-bookreader-bundle.js.LICENSE.txt +7 -0
  11. package/BookReader/ia-bookreader-bundle.js.map +1 -0
  12. package/BookReader/icons/1up.svg +1 -12
  13. package/BookReader/icons/2up.svg +1 -15
  14. package/BookReader/icons/advance.svg +3 -26
  15. package/BookReader/icons/chevron-right.svg +1 -1
  16. package/BookReader/icons/close-circle-dark.svg +1 -0
  17. package/BookReader/icons/close-circle.svg +1 -1
  18. package/BookReader/icons/fullscreen.svg +1 -17
  19. package/BookReader/icons/fullscreen_exit.svg +1 -17
  20. package/BookReader/icons/hamburger.svg +1 -15
  21. package/BookReader/icons/left-arrow.svg +1 -12
  22. package/BookReader/icons/magnify-minus.svg +1 -16
  23. package/BookReader/icons/magnify-plus.svg +1 -17
  24. package/BookReader/icons/magnify.svg +1 -15
  25. package/BookReader/icons/pause.svg +1 -23
  26. package/BookReader/icons/play.svg +1 -22
  27. package/BookReader/icons/playback-speed.svg +1 -34
  28. package/BookReader/icons/read-aloud.svg +1 -22
  29. package/BookReader/icons/review.svg +3 -22
  30. package/BookReader/icons/thumbnails.svg +1 -17
  31. package/BookReader/icons/voice.svg +1 -0
  32. package/BookReader/icons/volume-full.svg +1 -22
  33. package/BookReader/images/BRicons.svg +5 -94
  34. package/BookReader/images/books_graphic.svg +1 -177
  35. package/BookReader/images/icon_book.svg +1 -12
  36. package/BookReader/images/icon_bookmark.svg +1 -12
  37. package/BookReader/images/icon_gear.svg +1 -14
  38. package/BookReader/images/icon_hamburger.svg +1 -20
  39. package/BookReader/images/icon_home.svg +1 -21
  40. package/BookReader/images/icon_info.svg +1 -11
  41. package/BookReader/images/icon_one_page.svg +1 -8
  42. package/BookReader/images/icon_pause.svg +1 -1
  43. package/BookReader/images/icon_play.svg +1 -1
  44. package/BookReader/images/icon_playback-rate.svg +1 -15
  45. package/BookReader/images/icon_search_button.svg +1 -8
  46. package/BookReader/images/icon_share.svg +1 -9
  47. package/BookReader/images/icon_skip-ahead.svg +1 -6
  48. package/BookReader/images/icon_skip-back.svg +2 -13
  49. package/BookReader/images/icon_speaker.svg +1 -18
  50. package/BookReader/images/icon_speaker_open.svg +1 -10
  51. package/BookReader/images/icon_thumbnails.svg +1 -12
  52. package/BookReader/images/icon_toc.svg +1 -5
  53. package/BookReader/images/icon_two_pages.svg +1 -9
  54. package/BookReader/images/marker_chap-off.svg +1 -11
  55. package/BookReader/images/marker_chap-on.svg +1 -11
  56. package/BookReader/images/marker_srch-on.svg +1 -11
  57. package/BookReader/images/unviewable_page.png +0 -0
  58. package/BookReader/jquery-3.js +2 -0
  59. package/BookReader/jquery-3.js.LICENSE.txt +24 -0
  60. package/BookReader/plugins/plugin.archive_analytics.js +1 -172
  61. package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
  62. package/BookReader/plugins/plugin.autoplay.js +1 -165
  63. package/BookReader/plugins/plugin.autoplay.js.map +1 -1
  64. package/BookReader/plugins/plugin.chapters.js +22 -301
  65. package/BookReader/plugins/plugin.chapters.js.LICENSE.txt +1 -0
  66. package/BookReader/plugins/plugin.chapters.js.map +1 -1
  67. package/BookReader/plugins/plugin.iframe.js +1 -74
  68. package/BookReader/plugins/plugin.iframe.js.map +1 -1
  69. package/BookReader/plugins/plugin.iiif.js +2 -0
  70. package/BookReader/plugins/plugin.iiif.js.map +1 -0
  71. package/BookReader/plugins/plugin.resume.js +1 -368
  72. package/BookReader/plugins/plugin.resume.js.map +1 -1
  73. package/BookReader/plugins/plugin.search.js +2 -1420
  74. package/BookReader/plugins/plugin.search.js.LICENSE.txt +1 -0
  75. package/BookReader/plugins/plugin.search.js.map +1 -1
  76. package/BookReader/plugins/plugin.text_selection.js +2 -1080
  77. package/BookReader/plugins/plugin.text_selection.js.LICENSE.txt +1 -0
  78. package/BookReader/plugins/plugin.text_selection.js.map +1 -1
  79. package/BookReader/plugins/plugin.tts.js +2 -9193
  80. package/BookReader/plugins/plugin.tts.js.LICENSE.txt +2 -0
  81. package/BookReader/plugins/plugin.tts.js.map +1 -1
  82. package/BookReader/plugins/plugin.url.js +1 -269
  83. package/BookReader/plugins/plugin.url.js.map +1 -1
  84. package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -379
  85. package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
  86. package/BookReader/webcomponents-bundle.js +3 -0
  87. package/BookReader/webcomponents-bundle.js.LICENSE.txt +9 -0
  88. package/BookReader/webcomponents-bundle.js.map +1 -0
  89. package/BookReaderDemo/BookReaderDemo.css +18 -19
  90. package/BookReaderDemo/BookReaderJSAdvanced.js +0 -3
  91. package/BookReaderDemo/BookReaderJSSimple.js +1 -0
  92. package/BookReaderDemo/IADemoBr.js +144 -0
  93. package/BookReaderDemo/demo-advanced.html +2 -2
  94. package/BookReaderDemo/demo-embed-iframe-src.html +2 -1
  95. package/BookReaderDemo/demo-fullscreen-mobile.html +3 -5
  96. package/BookReaderDemo/demo-fullscreen.html +2 -4
  97. package/BookReaderDemo/demo-iiif.html +99 -12
  98. package/BookReaderDemo/demo-internetarchive.html +214 -18
  99. package/BookReaderDemo/demo-multiple.html +2 -1
  100. package/BookReaderDemo/demo-preview-pages.html +526 -525
  101. package/BookReaderDemo/demo-simple.html +2 -1
  102. package/BookReaderDemo/demo-vendor-fullscreen.html +2 -4
  103. package/BookReaderDemo/ia-multiple-volumes-manifest.js +170 -0
  104. package/BookReaderDemo/immersion-1up.html +2 -2
  105. package/BookReaderDemo/immersion-mode.html +2 -4
  106. package/BookReaderDemo/toggle_controls.html +3 -2
  107. package/BookReaderDemo/view_mode.html +2 -1
  108. package/BookReaderDemo/viewmode-cycle.html +2 -3
  109. package/CHANGELOG.md +595 -33
  110. package/README.md +14 -1
  111. package/babel.config.js +20 -0
  112. package/codecov.yml +6 -0
  113. package/index.html +5 -2
  114. package/jsconfig.json +19 -0
  115. package/netlify.toml +9 -0
  116. package/package.json +70 -62
  117. package/renovate.json +52 -0
  118. package/scripts/preversion.js +0 -1
  119. package/src/BookNavigator/assets/bookmark-colors.js +1 -1
  120. package/src/BookNavigator/assets/button-base.js +10 -2
  121. package/src/BookNavigator/assets/ia-logo.js +17 -0
  122. package/src/BookNavigator/assets/icon_checkmark.js +1 -1
  123. package/src/BookNavigator/assets/icon_close.js +1 -1
  124. package/src/BookNavigator/book-navigator.js +590 -0
  125. package/src/BookNavigator/bookmarks/bookmark-button.js +3 -2
  126. package/src/BookNavigator/bookmarks/bookmark-edit.js +3 -4
  127. package/src/BookNavigator/bookmarks/bookmarks-list.js +2 -3
  128. package/src/BookNavigator/bookmarks/bookmarks-loginCTA.js +4 -9
  129. package/src/BookNavigator/bookmarks/bookmarks-provider.js +27 -17
  130. package/src/BookNavigator/bookmarks/ia-bookmarks.js +116 -67
  131. package/src/BookNavigator/delete-modal-actions.js +1 -1
  132. package/src/BookNavigator/downloads/downloads-provider.js +36 -21
  133. package/src/BookNavigator/downloads/downloads.js +29 -25
  134. package/src/BookNavigator/search/search-provider.js +80 -28
  135. package/src/BookNavigator/search/search-results.js +29 -26
  136. package/src/BookNavigator/sharing.js +27 -0
  137. package/src/BookNavigator/viewable-files.js +95 -0
  138. package/src/BookNavigator/visual-adjustments/visual-adjustments-provider.js +13 -12
  139. package/src/BookNavigator/visual-adjustments/visual-adjustments.js +7 -7
  140. package/src/BookReader/BookModel.js +76 -41
  141. package/src/BookReader/DragScrollable.js +233 -0
  142. package/src/BookReader/ImageCache.js +48 -15
  143. package/src/BookReader/Mode1Up.js +56 -351
  144. package/src/BookReader/Mode1UpLit.js +388 -0
  145. package/src/BookReader/Mode2Up.js +73 -1318
  146. package/src/BookReader/Mode2UpLit.js +777 -0
  147. package/src/BookReader/ModeCoordinateSpace.js +29 -0
  148. package/src/BookReader/ModeSmoothZoom.js +312 -0
  149. package/src/BookReader/ModeThumb.js +19 -13
  150. package/src/BookReader/Navbar/Navbar.js +70 -54
  151. package/src/BookReader/PageContainer.js +116 -22
  152. package/src/BookReader/ReduceSet.js +3 -3
  153. package/src/BookReader/Toolbar/Toolbar.js +14 -41
  154. package/src/BookReader/events.js +2 -3
  155. package/src/BookReader/options.js +73 -15
  156. package/src/BookReader/utils/HTMLDimensionsCacher.js +44 -0
  157. package/src/BookReader/utils/ScrollClassAdder.js +31 -0
  158. package/src/BookReader/utils/SelectionObserver.js +45 -0
  159. package/src/BookReader/utils/classes.js +1 -1
  160. package/src/BookReader/utils.js +128 -13
  161. package/src/BookReader.js +562 -1078
  162. package/src/BookReaderPlugin.js +44 -0
  163. package/src/assets/icons/close-circle-dark.svg +1 -0
  164. package/src/assets/icons/magnify-minus.svg +3 -7
  165. package/src/assets/icons/magnify-plus.svg +3 -7
  166. package/src/assets/icons/voice.svg +1 -0
  167. package/src/assets/images/unviewable_page.png +0 -0
  168. package/src/css/BookReader.scss +1 -17
  169. package/src/css/_BRBookmarks.scss +1 -1
  170. package/src/css/_BRComponent.scss +1 -1
  171. package/src/css/_BRicon.scss +8 -2
  172. package/src/css/_BRmain.scss +33 -27
  173. package/src/css/_BRnav.scss +12 -42
  174. package/src/css/_BRpages.scss +170 -42
  175. package/src/css/_BRsearch.scss +68 -230
  176. package/src/css/_BRtoolbar.scss +5 -5
  177. package/src/css/_TextSelection.scss +87 -27
  178. package/src/css/_colorbox.scss +2 -2
  179. package/src/css/_controls.scss +24 -7
  180. package/src/css/_icons.scss +7 -1
  181. package/src/ia-bookreader/ia-bookreader.js +224 -0
  182. package/src/plugins/plugin.archive_analytics.js +84 -78
  183. package/src/plugins/plugin.autoplay.js +99 -104
  184. package/src/plugins/plugin.chapters.js +237 -191
  185. package/src/plugins/plugin.iframe.js +1 -1
  186. package/src/plugins/plugin.iiif.js +141 -0
  187. package/src/plugins/plugin.resume.js +53 -50
  188. package/src/plugins/plugin.text_selection.js +503 -175
  189. package/src/plugins/plugin.vendor-fullscreen.js +7 -7
  190. package/src/plugins/search/plugin.search.js +183 -121
  191. package/src/plugins/search/utils.js +43 -0
  192. package/src/plugins/search/view.js +67 -202
  193. package/src/plugins/tts/AbstractTTSEngine.js +75 -45
  194. package/src/plugins/tts/FestivalTTSEngine.js +21 -31
  195. package/src/plugins/tts/PageChunk.js +16 -23
  196. package/src/plugins/tts/PageChunkIterator.js +11 -17
  197. package/src/plugins/tts/WebTTSEngine.js +88 -72
  198. package/src/plugins/tts/plugin.tts.js +310 -350
  199. package/src/plugins/tts/utils.js +16 -26
  200. package/src/plugins/url/UrlPlugin.js +191 -0
  201. package/src/plugins/{plugin.url.js → url/plugin.url.js} +47 -18
  202. package/src/util/browserSniffing.js +22 -0
  203. package/src/util/docCookies.js +21 -2
  204. package/src/util/strings.js +1 -0
  205. package/tests/e2e/README.md +37 -0
  206. package/tests/e2e/autoplay.test.js +9 -6
  207. package/tests/e2e/base.test.js +8 -16
  208. package/tests/e2e/helpers/base.js +55 -50
  209. package/tests/e2e/helpers/debug.js +1 -1
  210. package/tests/e2e/helpers/mockSearch.js +19 -22
  211. package/tests/e2e/helpers/params.js +17 -0
  212. package/tests/e2e/helpers/rightToLeft.js +8 -14
  213. package/tests/e2e/helpers/search.js +73 -0
  214. package/tests/e2e/models/Navigation.js +20 -37
  215. package/tests/e2e/rightToLeft.test.js +4 -5
  216. package/tests/e2e/viewmode.test.js +40 -33
  217. package/tests/jest/BookNavigator/book-navigator.test.js +661 -0
  218. package/tests/jest/BookNavigator/bookmarks/bookmark-button.test.js +43 -0
  219. package/tests/{karma → jest}/BookNavigator/bookmarks/bookmark-edit.test.js +25 -26
  220. package/tests/{karma → jest}/BookNavigator/bookmarks/bookmarks-list.test.js +41 -42
  221. package/tests/jest/BookNavigator/bookmarks/ia-bookmarks.test.js +45 -0
  222. package/tests/jest/BookNavigator/downloads/downloads-provider.test.js +67 -0
  223. package/tests/jest/BookNavigator/downloads/downloads.test.js +53 -0
  224. package/tests/jest/BookNavigator/search/search-provider.test.js +167 -0
  225. package/tests/{karma/BookNavigator → jest/BookNavigator/search}/search-results.test.js +109 -60
  226. package/tests/jest/BookNavigator/sharing/sharing-provider.test.js +49 -0
  227. package/tests/jest/BookNavigator/viewable-files/viewable-files-provider.test.js +80 -0
  228. package/tests/jest/BookNavigator/visual-adjustments.test.js +200 -0
  229. package/tests/{BookReader → jest/BookReader}/BookModel.test.js +74 -14
  230. package/tests/jest/BookReader/BookReaderPublicFunctions.test.js +193 -0
  231. package/tests/{BookReader → jest/BookReader}/ImageCache.test.js +4 -4
  232. package/tests/jest/BookReader/Mode1UpLit.test.js +73 -0
  233. package/tests/jest/BookReader/Mode2Up.test.js +98 -0
  234. package/tests/jest/BookReader/Mode2UpLit.test.js +190 -0
  235. package/tests/jest/BookReader/ModeCoordinateSpace.test.js +16 -0
  236. package/tests/jest/BookReader/ModeSmoothZoom.test.js +218 -0
  237. package/tests/jest/BookReader/ModeThumb.test.js +71 -0
  238. package/tests/{BookReader → jest/BookReader}/Navbar/Navbar.test.js +42 -29
  239. package/tests/jest/BookReader/PageContainer.test.js +238 -0
  240. package/tests/{BookReader → jest/BookReader}/ReduceSet.test.js +1 -1
  241. package/tests/{BookReader → jest/BookReader}/Toolbar/Toolbar.test.js +3 -3
  242. package/tests/jest/BookReader/utils/HTMLDimensionsCacher.test.js +59 -0
  243. package/tests/jest/BookReader/utils/ScrollClassAdder.test.js +49 -0
  244. package/tests/jest/BookReader/utils/SelectionObserver.test.js +57 -0
  245. package/tests/{BookReader → jest/BookReader}/utils/classes.test.js +1 -1
  246. package/tests/jest/BookReader/utils.test.js +250 -0
  247. package/tests/jest/BookReader.keyboard.test.js +190 -0
  248. package/tests/{BookReader.options.test.js → jest/BookReader.options.test.js} +10 -2
  249. package/tests/{BookReader.test.js → jest/BookReader.test.js} +43 -53
  250. package/tests/jest/plugins/plugin.archive_analytics.test.js +20 -0
  251. package/tests/jest/plugins/plugin.autoplay.test.js +35 -0
  252. package/tests/jest/plugins/plugin.chapters.test.js +195 -0
  253. package/tests/{plugins → jest/plugins}/plugin.iframe.test.js +4 -4
  254. package/tests/{plugins → jest/plugins}/plugin.resume.test.js +22 -35
  255. package/tests/jest/plugins/plugin.text_selection.test.js +316 -0
  256. package/tests/{plugins → jest/plugins}/plugin.vendor-fullscreen.test.js +2 -2
  257. package/tests/{plugins → jest/plugins}/search/plugin.search.test.js +26 -47
  258. package/tests/{plugins → jest/plugins}/search/plugin.search.view.test.js +42 -9
  259. package/tests/jest/plugins/search/utils.js +25 -0
  260. package/tests/jest/plugins/search/utils.test.js +29 -0
  261. package/tests/{plugins → jest/plugins}/tts/AbstractTTSEngine.test.js +30 -10
  262. package/tests/{plugins → jest/plugins}/tts/FestivalTTSEngine.test.js +4 -4
  263. package/tests/{plugins → jest/plugins}/tts/PageChunk.test.js +1 -1
  264. package/tests/{plugins → jest/plugins}/tts/PageChunkIterator.test.js +3 -3
  265. package/tests/{plugins → jest/plugins}/tts/WebTTSEngine.test.js +47 -1
  266. package/tests/{plugins → jest/plugins}/tts/utils.test.js +1 -60
  267. package/tests/jest/plugins/url/UrlPlugin.test.js +198 -0
  268. package/tests/{plugins → jest/plugins/url}/plugin.url.test.js +57 -18
  269. package/tests/jest/setup.js +3 -0
  270. package/tests/{util → jest/util}/browserSniffing.test.js +1 -1
  271. package/tests/jest/util/docCookies.test.js +24 -0
  272. package/tests/{util → jest/util}/strings.test.js +1 -1
  273. package/tests/{utils.js → jest/utils.js} +38 -0
  274. package/webpack.config.js +16 -10
  275. package/.babelrc +0 -12
  276. package/.dependabot/config.yml +0 -6
  277. package/.testcaferc.json +0 -5
  278. package/BookReader/bookreader-component-bundle.js +0 -14330
  279. package/BookReader/bookreader-component-bundle.js.LICENSE.txt +0 -38
  280. package/BookReader/bookreader-component-bundle.js.map +0 -1
  281. package/BookReader/icons/sort-ascending.svg +0 -1
  282. package/BookReader/icons/sort-descending.svg +0 -1
  283. package/BookReader/jquery-1.10.1.js +0 -108
  284. package/BookReader/jquery-1.10.1.js.LICENSE.txt +0 -24
  285. package/BookReader/plugins/plugin.menu_toggle.js +0 -369
  286. package/BookReader/plugins/plugin.menu_toggle.js.map +0 -1
  287. package/BookReader/plugins/plugin.mobile_nav.js +0 -335
  288. package/BookReader/plugins/plugin.mobile_nav.js.map +0 -1
  289. package/BookReaderDemo/BookReaderJSAutoplay.js +0 -56
  290. package/BookReaderDemo/IIIFBookReader.js +0 -207
  291. package/BookReaderDemo/bookreader-template-bundle.js +0 -7178
  292. package/BookReaderDemo/demo-autoplay.html +0 -38
  293. package/BookReaderDemo/demo-iiif.js +0 -26
  294. package/BookReaderDemo/demo-plugin-menu-toggle.html +0 -34
  295. package/karma.conf.js +0 -23
  296. package/src/BookNavigator/BookModel.js +0 -14
  297. package/src/BookNavigator/BookNavigator.js +0 -452
  298. package/src/BookNavigator/assets/book-loader.js +0 -27
  299. package/src/BookNavigator/assets/icon_sort_ascending.js +0 -5
  300. package/src/BookNavigator/assets/icon_sort_descending.js +0 -5
  301. package/src/BookNavigator/br-fullscreen-mgr.js +0 -83
  302. package/src/BookNavigator/search/a-search-result.js +0 -55
  303. package/src/BookNavigator/volumes/volumes-provider.js +0 -108
  304. package/src/BookNavigator/volumes/volumes.js +0 -162
  305. package/src/BookReader/DebugConsole.js +0 -54
  306. package/src/BookReaderComponent/BookReaderComponent.js +0 -112
  307. package/src/ItemNavigator/ItemNavigator.js +0 -372
  308. package/src/ItemNavigator/providers/sharing.js +0 -29
  309. package/src/assets/icons/sort-ascending.svg +0 -1
  310. package/src/assets/icons/sort-descending.svg +0 -1
  311. package/src/css/_MobileNav.scss +0 -194
  312. package/src/dragscrollable-br.js +0 -261
  313. package/src/plugins/menu_toggle/plugin.menu_toggle.js +0 -324
  314. package/src/plugins/plugin.mobile_nav.js +0 -287
  315. package/tests/BookReader/BookReaderPublicFunctions.test.js +0 -171
  316. package/tests/BookReader/DebugConsole.test.js +0 -25
  317. package/tests/BookReader/Mode1Up.test.js +0 -164
  318. package/tests/BookReader/Mode2Up.test.js +0 -247
  319. package/tests/BookReader/PageContainer.test.js +0 -115
  320. package/tests/BookReader/utils.test.js +0 -109
  321. package/tests/e2e/helpers/desktopSearch.js +0 -72
  322. package/tests/e2e/helpers/mobileSearch.js +0 -85
  323. package/tests/e2e/ia-production/ia-prod-base.js +0 -17
  324. package/tests/karma/BookNavigator/book-navigator.test.js +0 -132
  325. package/tests/karma/BookNavigator/visual-adjustments.test.js +0 -201
  326. package/tests/karma/BookNavigator/volumes.test.js +0 -133
  327. package/tests/plugins/menu_toggle/plugin.menu_toggle.test.js +0 -68
  328. package/tests/plugins/plugin.archive_analytics.test.js +0 -23
  329. package/tests/plugins/plugin.autoplay.test.js +0 -52
  330. package/tests/plugins/plugin.chapters.test.js +0 -130
  331. package/tests/plugins/plugin.mobile_nav.test.js +0 -66
  332. package/tests/plugins/plugin.text_selection.test.js +0 -203
  333. package/tests/util/docCookies.test.js +0 -15
@@ -1,247 +0,0 @@
1
-
2
- import sinon from 'sinon';
3
- import { deepCopy } from '../utils.js';
4
- import BookReader from '../../src/BookReader.js';
5
- /** @typedef {import('../../src/BookReader/options.js').BookReaderOptions} BookReaderOptions */
6
-
7
- beforeAll(() => {
8
- global.alert = jest.fn();
9
- })
10
- afterEach(() => {
11
- jest.restoreAllMocks();
12
- sinon.restore();
13
- });
14
-
15
- /** @type {BookReaderOptions['data']} */
16
- const SAMPLE_DATA = [
17
- [
18
- { width: 123, height: 123, uri: 'https://archive.org/image0.jpg', pageNum: '1' },
19
- ],
20
- [
21
- { width: 123, height: 123, uri: 'https://archive.org/image1.jpg', pageNum: '2' },
22
- { width: 123, height: 123, uri: 'https://archive.org/image2.jpg', pageNum: '3' },
23
- ],
24
- [
25
- { width: 123, height: 123, uri: 'https://archive.org/image3.jpg', pageNum: '4' },
26
- { width: 123, height: 123, uri: 'https://archive.org/image4.jpg', pageNum: '5' },
27
- ],
28
- [
29
- { width: 123, height: 123, uri: 'https://archive.org/image5.jpg', pageNum: '6' },
30
- ],
31
- ];
32
-
33
-
34
- describe('zoom', () => {
35
- const br = new BookReader({ data: SAMPLE_DATA });
36
- br.init();
37
-
38
- const stopAnim = sinon.spy(br, 'stopFlipAnimations');
39
- const resizeSpread = sinon.spy(br._modes.mode2Up, 'resizeSpread');
40
- br._modes.mode2Up.zoom('in');
41
-
42
- test('stops animations when zooming', () => {
43
- expect(stopAnim.callCount).toBe(1);
44
- });
45
- test('always redraws when zooming', () => {
46
- expect(resizeSpread.callCount).toBe(0);
47
- });
48
- });
49
-
50
- describe('prefetch', () => {
51
- test('loads nearby pages', () => {
52
- const br = new BookReader({ data: SAMPLE_DATA });
53
- const mode2Up = br._modes.mode2Up;
54
- br.init();
55
- mode2Up.prefetch();
56
- expect(Object.keys(mode2Up.pageContainers).length).toBeGreaterThan(2);
57
- });
58
-
59
- test('works when at end of book', () => {
60
- const br = new BookReader({ data: SAMPLE_DATA });
61
- const mode2Up = br._modes.mode2Up;
62
- br.init();
63
- br.jumpToIndex(-1);
64
- mode2Up.prefetch();
65
- expect(Object.keys(mode2Up.pageContainers).length).toBeGreaterThan(2);
66
- });
67
-
68
- test('skips consecutive unviewables', () => {
69
- const data = deepCopy(SAMPLE_DATA);
70
- data[1].forEach(page => page.viewable = false);
71
- const br = new BookReader({ data });
72
- const mode2Up = br._modes.mode2Up;
73
- br.init();
74
- mode2Up.prefetch();
75
- expect(mode2Up.pageContainers).not.toContain(2);
76
- });
77
- });
78
-
79
- describe('draw 2up leaves', () => {
80
- test('calls `drawLeafs` on init as default', () => {
81
- const br = new BookReader({ data: SAMPLE_DATA });
82
- const drawLeafs = sinon.spy(br._modes.mode2Up, 'drawLeafs');
83
-
84
- br.init();
85
- expect(drawLeafs.callCount).toBe(1);
86
- })
87
-
88
- test('sets `this.displayedIndices`', () => {
89
- const extremelyWrongValueForDisplayedIndices = null;
90
- const br = new BookReader({ data: SAMPLE_DATA });
91
-
92
- br.init();
93
- br.displayedIndices = extremelyWrongValueForDisplayedIndices;
94
- expect(br.displayedIndices).toBe(extremelyWrongValueForDisplayedIndices);
95
-
96
- br._modes.mode2Up.drawLeafs();
97
-
98
- expect(br.displayedIndices).not.toBe(extremelyWrongValueForDisplayedIndices);
99
- expect(br.displayedIndices.length).toBe(2); // is array
100
- expect(br.displayedIndices).toEqual([-1, 0]); // default to starting index on right, placeholder for left
101
- })
102
- });
103
-
104
- describe('resizeSpread', () => {
105
- test('only resizes spread', () => {
106
- const br = new BookReader({ data: SAMPLE_DATA });
107
- br.init();
108
- const resizeBRcontainer = sinon.spy(br, 'resizeBRcontainer');
109
- const calculateSpreadSize = sinon.spy(br._modes.mode2Up, 'calculateSpreadSize');
110
- const drawLeafs = sinon.spy(br._modes.mode2Up, 'drawLeafs');
111
- const centerView = sinon.spy(br._modes.mode2Up, 'centerView');
112
-
113
- br._modes.mode2Up.resizeSpread();
114
- expect(drawLeafs.callCount).toBe(0); // no draw
115
- expect(resizeBRcontainer.callCount).toBe(1);
116
- expect(calculateSpreadSize.callCount).toBe(1);
117
- expect(centerView.callCount).toBe(1);
118
- });
119
- });
120
-
121
- describe('2up Container sizing', () => {
122
- test('baseLeafCss', () => {
123
- const br = new BookReader({ data: SAMPLE_DATA });
124
- br.init();
125
- br.calculateSpreadSize();
126
- expect(Object.keys(br._modes.mode2Up.baseLeafCss)).toEqual(['position', 'right', 'top', 'zIndex']);
127
- });
128
- test('heightCss', () => {
129
- const br = new BookReader({ data: SAMPLE_DATA });
130
- br.init();
131
- br.calculateSpreadSize();
132
- const heightStub = 1000;
133
- br.twoPage.height = heightStub;
134
- expect(Object.keys(br._modes.mode2Up.heightCss)).toEqual(['height']);
135
- expect(br._modes.mode2Up.heightCss).toEqual({height: `${heightStub}px`});
136
- });
137
- describe('left side', () => {
138
- const br = new BookReader({ data: SAMPLE_DATA });
139
- br.init();
140
- br.calculateSpreadSize();
141
-
142
- test('leftLeafCss', () => {
143
- expect(Object.keys(br._modes.mode2Up.leftLeafCss)).toEqual([
144
- 'position',
145
- 'right',
146
- 'top',
147
- 'zIndex',
148
- 'height',
149
- 'left',
150
- 'width',
151
- ]);
152
- });
153
- test('leafEdgeLCss', () => {
154
- expect(Object.keys(br._modes.mode2Up.leafEdgeLCss)).toEqual([
155
- 'height',
156
- 'width',
157
- 'left',
158
- 'top',
159
- 'border'
160
- ]);
161
- });
162
- });
163
- describe('right side', () => {
164
- const br = new BookReader({ data: SAMPLE_DATA });
165
- br.init();
166
- br.calculateSpreadSize();
167
-
168
- test('rightLeafCss', () => {
169
- expect(Object.keys(br._modes.mode2Up.rightLeafCss)).toEqual([
170
- 'position',
171
- 'right',
172
- 'top',
173
- 'zIndex',
174
- 'height',
175
- 'left',
176
- 'width',
177
- ]);
178
- });
179
- test('leafEdgeRCss', () => {
180
- expect(Object.keys(br._modes.mode2Up.leafEdgeRCss)).toEqual([
181
- 'height',
182
- 'width',
183
- 'left',
184
- 'top',
185
- 'border'
186
- ]);
187
- });
188
- });
189
- describe('full width container, overlay + spine', () => {
190
- test('mainContainerCss', () => {
191
- const br = new BookReader({ data: SAMPLE_DATA });
192
- br.init();
193
- br.calculateSpreadSize();
194
-
195
- expect(Object.keys(br._modes.mode2Up.mainContainerCss)).toEqual(['height', 'width', 'position']);
196
- });
197
- test('spreadCoverCss', () => {
198
- const br = new BookReader({ data: SAMPLE_DATA });
199
- br.init();
200
- br.calculateSpreadSize();
201
- expect(Object.keys(br._modes.mode2Up.spreadCoverCss)).toEqual(['width', 'height', 'visibility']);
202
- });
203
- test('spineCss', () => {
204
- const br = new BookReader({ data: SAMPLE_DATA });
205
- br.init();
206
- br.calculateSpreadSize();
207
- expect(Object.keys(br._modes.mode2Up.spineCss)).toEqual(['width', 'height', 'left', 'top']);
208
- });
209
- });
210
- });
211
-
212
- describe('prepareTwoPageView', () => {
213
- describe('drawing spread', () => {
214
- test('always draws new spread if `drawNewSpread` is true ', () => {
215
- const br = new BookReader({ data: SAMPLE_DATA });
216
- const mode2Up = br._modes.mode2Up;
217
- br.init();
218
- const drawLeafs = sinon.spy(mode2Up, 'drawLeafs');
219
- const resizeSpread = sinon.spy(mode2Up, 'resizeSpread');
220
- const calculateSpreadSize = sinon.spy(mode2Up, 'calculateSpreadSize');
221
- const prunePageContainers = sinon.spy(mode2Up, 'prunePageContainers');
222
- const prefetch = sinon.spy(mode2Up, 'prefetch');
223
- const bindGestures = sinon.spy(br, 'bindGestures');
224
- const centerView = sinon.spy(mode2Up, 'centerView');
225
- const preparePopUp = sinon.spy(mode2Up, 'preparePopUp');
226
- const updateBrClasses = sinon.spy(br, 'updateBrClasses');
227
-
228
- br.prepareTwoPageView(undefined, undefined, true);
229
- expect(prefetch.callCount).toBe(1);
230
-
231
- expect(resizeSpread.callCount).toBe(0);
232
- expect(drawLeafs.callCount).toBe(1);
233
- expect(calculateSpreadSize.callCount).toBe(1);
234
- expect(prunePageContainers.callCount).toBe(1);
235
- expect(bindGestures.callCount).toBe(1);
236
- expect(centerView.callCount).toBe(1);
237
- expect(preparePopUp.callCount).toBe(1);
238
- expect(updateBrClasses.callCount).toBe(1);
239
- });
240
- });
241
- });
242
-
243
- test('uses ImageCache', () => {
244
- const br = new BookReader({ data: SAMPLE_DATA });
245
- br.init();
246
- expect(Object.keys(br.imageCache.cache).length).toBeGreaterThan(2);
247
- });
@@ -1,115 +0,0 @@
1
- import {PageContainer} from '../../src/BookReader/PageContainer.js';
2
-
3
- describe('constructor', () => {
4
- test('protected books', () => {
5
- const pc = new PageContainer(null, {isProtected: true});
6
- expect(pc.$container.hasClass('protected')).toBe(true);
7
- expect(pc.$container.find('.BRscreen').length).toBe(1);
8
- });
9
-
10
- test('non-protected books', () => {
11
- const pc = new PageContainer(null, {isProtected: false});
12
- expect(pc.$container.hasClass('protected')).toBe(false);
13
- expect(pc.$container.find('.BRscreen').length).toBe(0);
14
- });
15
-
16
- test('empty page', () => {
17
- const pc = new PageContainer(null, {isProtected: false});
18
- expect(pc.$container.hasClass('BRemptypage')).toBe(true);
19
- });
20
-
21
- test('non-empty page', () => {
22
- const pc = new PageContainer({index: 7}, {isProtected: false});
23
- expect(pc.$container.hasClass('BRemptypage')).toBe(false);
24
- expect(pc.$container.hasClass('pagediv7')).toBe(true);
25
- });
26
-
27
- test('adds side attribute', () => {
28
- const pc = new PageContainer({index: 7, pageSide: 'R'}, {isProtected: false});
29
- expect(pc.$container.hasClass('BRemptypage')).toBe(false);
30
- expect(pc.$container.attr('data-side')).toBe('R');
31
- });
32
- });
33
-
34
- describe('update', async () => {
35
- test('dimensions sets CSS', () => {
36
- const pc = new PageContainer(null, {});
37
- pc.update({ dimensions: { left: 20 } });
38
- expect(pc.$container[0].style.left).toBe('20px');
39
- });
40
-
41
- test('does not create image if empty page', () => {
42
- const pc = new PageContainer(null, {});
43
- pc.update({ reduce: null });
44
- expect(pc.$img).toBeNull();
45
- pc.update({ reduce: 7 });
46
- expect(pc.$img).toBeNull();
47
- });
48
-
49
- test('does not create image if no reduce', () => {
50
- const pc = new PageContainer({index: 17}, {});
51
- pc.update({ reduce: null });
52
- expect(pc.$img).toBeNull();
53
- });
54
-
55
- test('does not set background image if already loaded', () => {
56
- const fakeImageCache = {
57
- imageLoaded: () => true,
58
- image: () => $('<img/>'),
59
- };
60
- const pc = new PageContainer({index: 12}, {imageCache: fakeImageCache});
61
- pc.update({ reduce: 7 });
62
- expect(pc.$img[0].style.background).toBe('');
63
- });
64
-
65
- test('removes image between updates', () => {
66
- const fakeImageCache = {
67
- imageLoaded: () => true,
68
- image: () => $('<img/>'),
69
- };
70
- const pc = new PageContainer({index: 12}, {imageCache: fakeImageCache});
71
- pc.update({ reduce: 7 });
72
- const $im1 = pc.$img;
73
- pc.update({ reduce: 7 });
74
- const $im2 = pc.$img;
75
- expect($im1).not.toBe($im2);
76
- expect($im1.parent().length).toBe(0);
77
- });
78
-
79
- test('adds/removes loading indicators while loading', () => {
80
- const fakeImageCache = {
81
- imageLoaded: () => false,
82
- image: () => $('<img/>'),
83
- getBestLoadedReduce: () => undefined,
84
- };
85
- const pc = new PageContainer({index: 12}, {imageCache: fakeImageCache, loadingImage: 'loading.gif'});
86
- pc.update({ reduce: 7 });
87
- expect(pc.$container.hasClass('BRpageloading')).toBe(true);
88
- // See https://github.com/jsdom/jsdom/issues/3169
89
- // expect(pc.$img.css('background')).toBeTruthy();
90
- // expect(pc.$img.css('background').includes('loading.gif')).toBe(true);
91
- // expect(pc.$img.css('background').includes(',')).toBe(false);
92
-
93
- pc.$img.trigger('loadend');
94
- expect(pc.$container.hasClass('BRpageloading')).toBe(false);
95
- expect(pc.$img.css('background')).toBeFalsy();
96
- });
97
-
98
- test('shows lower res image while loading if one available', () => {
99
- const fakeImageCache = {
100
- imageLoaded: () => false,
101
- image: () => $('<img/>'),
102
- getBestLoadedReduce: () => 3,
103
- };
104
- const fakePage = {
105
- index: 12,
106
- getURI: () => 'page12.jpg',
107
- };
108
- const pc = new PageContainer(fakePage, {imageCache: fakeImageCache, loadingImage: 'loading.gif'});
109
- pc.update({ reduce: 7 });
110
- // See https://github.com/jsdom/jsdom/issues/3169
111
- // expect(pc.$img.css('background').includes('page12.jpg')).toBe(true);
112
- pc.$img.trigger('loadend');
113
- expect(pc.$img.css('background')).toBeFalsy();
114
- });
115
- });
@@ -1,109 +0,0 @@
1
- import sinon from 'sinon';
2
- import {
3
- clamp,
4
- cssPercentage,
5
- debounce,
6
- decodeURIComponentPlus,
7
- encodeURIComponentPlus,
8
- escapeHTML,
9
- polyfillCustomEvent,
10
- PolyfilledCustomEvent,
11
- sleep,
12
- } from '../../src/BookReader/utils.js';
13
-
14
- test('clamp function returns Math.min(Math.max(value, min), max)', () => {
15
- expect(clamp(2,1,3)).toEqual(2);
16
- });
17
-
18
- test('calculate a percentage suitable for CSS', () => {
19
- expect(cssPercentage(2,1)).toEqual('200%');
20
- });
21
-
22
- test('escapeHTML function which replaces the string', () => {
23
- expect(escapeHTML('Me & You')).toEqual('Me &amp; You');
24
- expect(escapeHTML('Me > You')).toEqual('Me &gt; You');
25
- expect(escapeHTML('Me < You')).toEqual('Me &lt; You');
26
- expect(escapeHTML('Me " You')).toEqual('Me &quot; You');
27
- });
28
-
29
- test('Decodes a URI component and converts + to emptyStr', () => {
30
- expect(decodeURIComponentPlus("https%3A%2F%2Farchive.org%2Fskr+")).toEqual("https://archive.org/skr ");
31
- expect(decodeURIComponentPlus("%3Fx%3D+test")).toEqual("?x= test");
32
- });
33
-
34
- test('Encodes a URI component and converts emptyStr to +', () => {
35
- expect(encodeURIComponentPlus("?x=test ")).toEqual("%3Fx%3Dtest+");
36
- expect(encodeURIComponentPlus("ABC abc 123")).toEqual("ABC+abc+123");
37
- });
38
-
39
- let clock;
40
-
41
- beforeEach(() => {
42
- clock = sinon.useFakeTimers();
43
- });
44
-
45
- afterEach(() => {
46
- clock.restore();
47
- });
48
-
49
- test('testing debounce', () => {
50
- const func = jest.fn();
51
- const debouncedFunc = debounce(func, 1000);
52
- // Call it immediately
53
- debouncedFunc();
54
- expect(func).toHaveBeenCalledTimes(0); // func not called
55
-
56
- // Call it several times with 500ms between each call
57
- for (let i = 0; i < 10; i++) {
58
- clock.tick(500);
59
- debouncedFunc();
60
- }
61
- expect(func).toHaveBeenCalledTimes(0); // func not called
62
-
63
- // wait 1000ms
64
- clock.tick(1000);
65
- expect(func).toHaveBeenCalledTimes(1); // func called
66
- });
67
-
68
-
69
- describe('polyfillCustomEvent', () => {
70
- test('Overrides when missing', () => {
71
- const win = {};
72
- polyfillCustomEvent(win);
73
- expect(win).toHaveProperty('CustomEvent');
74
- });
75
-
76
- test('Overrides when not a function', () => {
77
- const win = { CustomEvent: {} };
78
- polyfillCustomEvent(win);
79
- expect(typeof win.CustomEvent).toBe('function');
80
- });
81
- });
82
-
83
- describe('PolyfilledCustomEvent', () => {
84
- test('Can be called as a constructor', () => {
85
- new PolyfilledCustomEvent('foo');
86
- });
87
-
88
- test('Calls deprecated browser methods', () => {
89
- const createEventSpy = sinon.spy(document, 'createEvent');
90
- const initCustomEventSpy = sinon.spy(CustomEvent.prototype, 'initCustomEvent');
91
- new PolyfilledCustomEvent('foo');
92
- expect(createEventSpy.callCount).toBe(1);
93
- expect(initCustomEventSpy.callCount).toBe(1);
94
- });
95
- });
96
-
97
- describe('sleep', () => {
98
- test('can set sleep in ms', async () => {
99
- jest.useFakeTimers();
100
-
101
- const sleepTimeMS = 11;
102
- await sleep(sleepTimeMS);
103
-
104
- expect(setTimeout).toHaveBeenCalledTimes(1);
105
- expect(setTimeout).toHaveBeenLastCalledWith(undefined, sleepTimeMS);
106
-
107
- jest.clearAllTimers();
108
- });
109
- });
@@ -1,72 +0,0 @@
1
- import { ClientFunction, RequestMock } from 'testcafe';
2
- import { SEARCH_INSIDE_URL_RE , mockResponseFound, mockResponseNotFound,
3
- TEST_TEXT_FOUND, TEST_TEXT_NOT_FOUND, PAGE_FIRST_RESULT, SEARCH_MATCHES_LENGTH } from './mockSearch';
4
-
5
-
6
- export function runDesktopSearchTests(br) {
7
- //building mock response for successful and unsuccessful search
8
- const mockFound = RequestMock()
9
- .onRequestTo(SEARCH_INSIDE_URL_RE )
10
- .respond(mockResponseFound, 202);
11
-
12
- const mockNotFound = RequestMock()
13
- .onRequestTo(SEARCH_INSIDE_URL_RE )
14
- .respond(mockResponseNotFound, 202);
15
-
16
-
17
- test
18
- .requestHooks(mockFound)('Desktop search - successful search', async t => {
19
- const nav = br.nav;
20
-
21
- //assuring that the search bar is enabled
22
- await t.expect(nav.desktop.searchBox.visible).ok();
23
-
24
- //testing search for a word found in the book
25
- await t
26
- .selectText(nav.desktop.searchBox.child('.BRsearchInput'))
27
- .pressKey('delete');
28
- await t.typeText(nav.desktop.searchBox.child('.BRsearchInput'), TEST_TEXT_FOUND);
29
- await t.click((nav.desktop.searchBox).child('.BRsearchSubmit'));
30
- await t.expect(nav.desktop.searchPin.exists).ok();
31
- await t.expect(nav.desktop.searchPin.child('.BRquery').child('div').exists).ok();
32
- await t.expect(nav.desktop.searchPin.child('.BRquery').child('div').innerText).contains(TEST_TEXT_FOUND);
33
- await t.expect(nav.desktop.searchNavigation.exists).ok();
34
- await t.expect(nav.desktop.searchNavigation.find('[data-id="resultsCount"]').exists).ok();
35
- await t.expect(nav.desktop.searchNavigation.find('[data-id="resultsCount"]').innerText).contains(SEARCH_MATCHES_LENGTH);
36
-
37
- //checking url
38
- const getPageUrl = ClientFunction(() => window.location.href.toString());
39
- await t.expect(getPageUrl()).contains(TEST_TEXT_FOUND);
40
-
41
- //checks clicking on first search pin opens correct page
42
- await t.click(nav.desktop.searchPin);
43
- await t.expect(getPageUrl()).contains(PAGE_FIRST_RESULT);
44
-
45
- //checks highlight on result page is visible
46
- const highlight = br.shell.find(".BookReaderSearchHilite");
47
- await t.expect(highlight.visible).ok();
48
-
49
- });
50
-
51
-
52
- test
53
- .requestHooks(mockNotFound)('Desktop search - unsuccessful search', async t => {
54
- const nav = br.nav;
55
-
56
- //assuring that the search bar is enabled
57
- await t.expect(nav.desktop.searchBox.visible).ok();
58
-
59
- //testing search for a word not found in the book
60
- await t
61
- .selectText(nav.desktop.searchBox.child('.BRsearchInput'))
62
- .pressKey('delete');
63
- await t.typeText(nav.desktop.searchBox.child('.BRsearchInput'), TEST_TEXT_NOT_FOUND);
64
- await t.click((nav.desktop.searchBox).child('.BRsearchSubmit'));
65
- await t.expect(nav.desktop.searchPin.child('.BRquery').child('div').withText(TEST_TEXT_NOT_FOUND).exists).notOk();
66
-
67
- const getPageUrl = ClientFunction(() => window.location.href.toString());
68
- await t.expect(getPageUrl()).contains(TEST_TEXT_NOT_FOUND);
69
- });
70
-
71
-
72
- }
@@ -1,85 +0,0 @@
1
- import { ClientFunction, RequestMock } from 'testcafe';
2
- import { SEARCH_INSIDE_URL_RE , mockResponseFound, mockResponseNotFound,
3
- TEST_TEXT_FOUND, TEST_TEXT_NOT_FOUND, PAGE_FIRST_RESULT } from './mockSearch';
4
-
5
-
6
- export function runMobileSearchTests(br) {
7
- //building mock response for successful and unsuccessful search
8
- const mockFound = RequestMock()
9
- .onRequestTo(SEARCH_INSIDE_URL_RE )
10
- .respond(mockResponseFound, 202);
11
-
12
- const mockNotFound = RequestMock()
13
- .onRequestTo(SEARCH_INSIDE_URL_RE )
14
- .respond(mockResponseNotFound, 202);
15
-
16
- test
17
- .requestHooks(mockFound)('Mobile search - successful search', async t => {
18
- await t.resizeWindowToFitDevice('Sony Xperia Z', {portraitOrientation: true})
19
- const nav = br.nav.mobile;
20
-
21
- //opening side menu and search
22
- await t.expect(nav.hamburgerButton.visible).ok();
23
- await t.click(nav.hamburgerButton);
24
- await t.expect(nav.menuSearchButton.visible).ok();
25
- await t.click(nav.menuSearchButton);
26
-
27
- //assuring that the search bar is enabled
28
- await t.expect(nav.searchBox.visible).ok();
29
-
30
- //testing successful search
31
- await t
32
- .selectText(nav.searchBox.find('[name="query"]'))
33
- .pressKey('delete');
34
- await t
35
- .typeText(nav.searchBox.find('[name="query"]'), TEST_TEXT_FOUND)
36
- .pressKey('enter');
37
- await t.expect(nav.searchResults.visible).ok();
38
- await t.expect(nav.searchResultText.exists).ok();
39
- await t.expect(nav.searchResultText.innerText).contains(TEST_TEXT_FOUND);
40
-
41
- //checking url
42
- const getPageUrl = ClientFunction(() => window.location.href);
43
- await t.expect(getPageUrl()).contains(TEST_TEXT_FOUND);
44
-
45
- //checks clicking on first search result opens correct page
46
- await t.click(nav.searchResults.child(0));
47
- await t.expect(getPageUrl()).contains(PAGE_FIRST_RESULT);
48
-
49
- //checks highlight on result page is visible
50
- const highlight = br.shell.find(".BookReaderSearchHilite");
51
- await t.expect(highlight.visible).ok();
52
-
53
- await t.maximizeWindow();
54
- });
55
-
56
- test
57
- .requestHooks(mockNotFound)('Mobile search - unsuccessful search', async t => {
58
- await t.resizeWindowToFitDevice('Sony Xperia Z', {portraitOrientation: true})
59
- const nav = br.nav.mobile;
60
-
61
- //opening side menu and search
62
- await t.expect(nav.hamburgerButton.visible).ok();
63
- await t.click(nav.hamburgerButton);
64
- await t.expect(nav.menuSearchButton.visible).ok();
65
- await t.click(nav.menuSearchButton);
66
-
67
- //assuring that the search bar is enabled
68
- await t.expect(nav.searchBox.visible).ok();
69
-
70
- //testing unsuccessful search
71
- await t
72
- .selectText(nav.searchBox.find('[name="query"]'))
73
- .pressKey('delete');
74
- await t
75
- .typeText(nav.searchBox.find('[name="query"]'), TEST_TEXT_NOT_FOUND)
76
- .pressKey('enter');
77
- await t.expect(nav.searchResultText.withText(TEST_TEXT_NOT_FOUND).exists).notOk();
78
-
79
- //checking url
80
- const getPageUrl = ClientFunction(() => window.location.href.toString());
81
- await t.expect(getPageUrl()).contains(TEST_TEXT_NOT_FOUND);
82
- await t.maximizeWindow();
83
- });
84
-
85
- }
@@ -1,17 +0,0 @@
1
- import { runBaseTests } from '../helpers/base';
2
- import BookReader from '../models/BookReader';
3
-
4
- const localURL = 'https://archive.org/details/';
5
- const books = [
6
- 'birdbookillustra00reedrich', // publicDomain
7
- // 'pianoservicingtu00rebl_0', // borrowable,
8
- // 'adventuresoftoms00twaiiala', // has chapter markers
9
- // 'gendaitankashu00meijuoft', // Right to Left book
10
- // 'gov.uspto.patents.application.10074026', // multiple files
11
- ];
12
-
13
- books.forEach(function(page) {
14
- const url = `${localURL}${page}`;
15
- fixture `Archive.org BR Base Tests for: ${page}`.page `${url}`;
16
- runBaseTests(new BookReader());
17
- });