@internetarchive/bookreader 5.0.0-10-alpha-1 → 5.0.0-100
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.
- package/BookReader/474.js +2 -0
- package/BookReader/474.js.map +1 -0
- package/BookReader/BookReader.css +428 -1139
- package/BookReader/BookReader.js +1 -1
- package/BookReader/BookReader.js.LICENSE.txt +20 -20
- package/BookReader/BookReader.js.map +1 -1
- package/BookReader/bergamot-translator-worker.js +2966 -0
- package/BookReader/bergamot-translator-worker.wasm +0 -0
- package/BookReader/hypothesis/LICENSE +50 -0
- package/BookReader/hypothesis/README.md +55 -0
- package/BookReader/hypothesis/build/boot.js +1 -0
- package/BookReader/hypothesis/build/manifest.json +20 -0
- package/BookReader/hypothesis/build/scripts/annotator.bundle.js +184 -0
- package/BookReader/hypothesis/build/scripts/annotator.bundle.js.map +1 -0
- package/BookReader/hypothesis/build/scripts/sidebar.bundle.js +798 -0
- package/BookReader/hypothesis/build/scripts/sidebar.bundle.js.map +1 -0
- package/BookReader/hypothesis/build/scripts/ui-playground.bundle.js +711 -0
- package/BookReader/hypothesis/build/scripts/ui-playground.bundle.js.map +1 -0
- package/BookReader/hypothesis/build/styles/annotator.css +2235 -0
- package/BookReader/hypothesis/build/styles/annotator.css.map +1 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Bold.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Italic.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Math-Italic.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Script-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- package/BookReader/hypothesis/build/styles/highlights.css +2 -0
- package/BookReader/hypothesis/build/styles/highlights.css.map +1 -0
- package/BookReader/hypothesis/build/styles/katex.min.css +2 -0
- package/BookReader/hypothesis/build/styles/katex.min.css.map +1 -0
- package/BookReader/hypothesis/build/styles/pdfjs-overrides.css +2 -0
- package/BookReader/hypothesis/build/styles/pdfjs-overrides.css.map +1 -0
- package/BookReader/hypothesis/build/styles/sidebar.css +2731 -0
- package/BookReader/hypothesis/build/styles/sidebar.css.map +1 -0
- package/BookReader/hypothesis/build/styles/ui-playground.css +2659 -0
- package/BookReader/hypothesis/build/styles/ui-playground.css.map +1 -0
- package/BookReader/hypothesis/package.json +126 -0
- package/BookReader/ia-bookreader-bundle.js +1782 -0
- package/BookReader/ia-bookreader-bundle.js.LICENSE.txt +7 -0
- package/BookReader/ia-bookreader-bundle.js.map +1 -0
- package/BookReader/icons/1up.svg +1 -1
- package/BookReader/icons/2up.svg +1 -1
- package/BookReader/icons/advance.svg +1 -1
- package/BookReader/icons/chevron-right.svg +1 -1
- package/BookReader/icons/close-circle-dark.svg +1 -1
- package/BookReader/icons/close-circle.svg +1 -1
- package/BookReader/icons/fullscreen.svg +1 -1
- package/BookReader/icons/fullscreen_exit.svg +1 -1
- package/BookReader/icons/hamburger.svg +1 -1
- package/BookReader/icons/left-arrow.svg +1 -1
- package/BookReader/icons/magnify-minus.svg +1 -1
- package/BookReader/icons/magnify-plus.svg +1 -1
- package/BookReader/icons/magnify.svg +1 -1
- package/BookReader/icons/pause.svg +1 -1
- package/BookReader/icons/play.svg +1 -1
- package/BookReader/icons/playback-speed.svg +1 -1
- package/BookReader/icons/read-aloud.svg +1 -1
- package/BookReader/icons/review.svg +1 -1
- package/BookReader/icons/thumbnails.svg +1 -1
- package/BookReader/icons/voice.svg +1 -0
- package/BookReader/icons/volume-full.svg +1 -1
- package/BookReader/images/BRicons.svg +3 -3
- package/BookReader/images/books_graphic.svg +1 -1
- package/BookReader/images/hypothesis.ico +0 -0
- package/BookReader/images/icon_book.svg +1 -1
- package/BookReader/images/icon_bookmark.svg +1 -1
- package/BookReader/images/icon_experiment.svg +1 -0
- package/BookReader/images/icon_gear.svg +1 -1
- package/BookReader/images/icon_hamburger.svg +1 -1
- package/BookReader/images/icon_home.svg +1 -1
- package/BookReader/images/icon_info.svg +1 -1
- package/BookReader/images/icon_one_page.svg +1 -1
- package/BookReader/images/icon_pause.svg +1 -1
- package/BookReader/images/icon_play.svg +1 -1
- package/BookReader/images/icon_playback-rate.svg +1 -1
- package/BookReader/images/icon_search_button.svg +1 -1
- package/BookReader/images/icon_share.svg +1 -1
- package/BookReader/images/icon_skip-ahead.svg +1 -1
- package/BookReader/images/icon_skip-back.svg +1 -1
- package/BookReader/images/icon_speaker.svg +1 -1
- package/BookReader/images/icon_speaker_open.svg +1 -1
- package/BookReader/images/icon_thumbnails.svg +1 -1
- package/BookReader/images/icon_toc.svg +1 -1
- package/BookReader/images/icon_two_pages.svg +1 -1
- package/BookReader/images/marker_chap-off.svg +1 -1
- package/BookReader/images/marker_chap-on.svg +1 -1
- package/BookReader/images/marker_srch-on.svg +1 -1
- package/BookReader/images/translate.svg +1 -0
- package/BookReader/images/unviewable_page.png +0 -0
- package/BookReader/jquery-3.js +2 -0
- package/BookReader/jquery-3.js.LICENSE.txt +24 -0
- package/BookReader/plugins/plugin.archive_analytics.js +1 -1
- package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
- package/BookReader/plugins/plugin.autoplay.js +1 -1
- package/BookReader/plugins/plugin.autoplay.js.map +1 -1
- package/BookReader/plugins/plugin.chapters.js +25 -1
- package/BookReader/plugins/plugin.chapters.js.LICENSE.txt +1 -0
- package/BookReader/plugins/plugin.chapters.js.map +1 -1
- package/BookReader/plugins/plugin.experiments.js +3 -0
- package/BookReader/plugins/plugin.experiments.js.LICENSE.txt +1 -0
- package/BookReader/plugins/plugin.experiments.js.map +1 -0
- package/BookReader/plugins/plugin.iframe.js +1 -1
- package/BookReader/plugins/plugin.iframe.js.map +1 -1
- package/BookReader/plugins/plugin.iiif.js +2 -0
- package/BookReader/plugins/plugin.iiif.js.map +1 -0
- package/BookReader/plugins/plugin.resume.js +1 -1
- package/BookReader/plugins/plugin.resume.js.map +1 -1
- package/BookReader/plugins/plugin.search.js +2 -1
- package/BookReader/plugins/plugin.search.js.LICENSE.txt +1 -0
- package/BookReader/plugins/plugin.search.js.map +1 -1
- package/BookReader/plugins/plugin.text_selection.js +2 -1
- package/BookReader/plugins/plugin.text_selection.js.LICENSE.txt +1 -0
- package/BookReader/plugins/plugin.text_selection.js.map +1 -1
- package/BookReader/plugins/plugin.translate.js +137 -0
- package/BookReader/plugins/plugin.translate.js.LICENSE.txt +1 -0
- package/BookReader/plugins/plugin.translate.js.map +1 -0
- package/BookReader/plugins/plugin.tts.js +1 -1
- package/BookReader/plugins/plugin.tts.js.LICENSE.txt +2 -0
- package/BookReader/plugins/plugin.tts.js.map +1 -1
- package/BookReader/plugins/plugin.url.js +1 -1
- package/BookReader/plugins/plugin.url.js.map +1 -1
- package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -1
- package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
- package/BookReader/plugins/translator-worker.js +2 -0
- package/BookReader/plugins/translator-worker.js.map +1 -0
- package/BookReader/silence.mp3 +0 -0
- package/BookReader/translator-worker.js +475 -0
- package/BookReader/webcomponents-bundle.js +3 -0
- package/BookReader/webcomponents-bundle.js.LICENSE.txt +9 -0
- package/BookReader/webcomponents-bundle.js.map +1 -0
- package/README.md +14 -3
- package/jsconfig.json +19 -0
- package/package.json +84 -64
- package/src/BookNavigator/assets/bookmark-colors.js +1 -1
- package/src/BookNavigator/assets/button-base.js +2 -1
- package/src/BookNavigator/assets/ia-logo.js +17 -0
- package/src/BookNavigator/assets/icon_checkmark.js +1 -1
- package/src/BookNavigator/assets/icon_close.js +1 -1
- package/src/BookNavigator/book-navigator.js +620 -0
- package/src/BookNavigator/bookmarks/bookmark-button.js +3 -2
- package/src/BookNavigator/bookmarks/bookmark-edit.js +2 -3
- package/src/BookNavigator/bookmarks/bookmarks-list.js +2 -3
- package/src/BookNavigator/bookmarks/bookmarks-loginCTA.js +2 -2
- package/src/BookNavigator/bookmarks/bookmarks-provider.js +27 -17
- package/src/BookNavigator/bookmarks/ia-bookmarks.js +116 -67
- package/src/BookNavigator/delete-modal-actions.js +1 -1
- package/src/BookNavigator/downloads/downloads-provider.js +36 -21
- package/src/BookNavigator/downloads/downloads.js +24 -4
- package/src/BookNavigator/search/search-provider.js +55 -27
- package/src/BookNavigator/search/search-results.js +25 -11
- package/src/BookNavigator/sharing.js +27 -0
- package/src/BookNavigator/viewable-files.js +95 -0
- package/src/BookNavigator/visual-adjustments/visual-adjustments-provider.js +13 -12
- package/src/BookNavigator/visual-adjustments/visual-adjustments.js +9 -9
- package/src/BookReader/BookModel.js +92 -46
- package/src/BookReader/DragScrollable.js +233 -0
- package/src/BookReader/ImageCache.js +49 -16
- package/src/BookReader/Mode1Up.js +58 -360
- package/src/BookReader/Mode1UpLit.js +393 -0
- package/src/BookReader/Mode2Up.js +75 -1318
- package/src/BookReader/Mode2UpLit.js +787 -0
- package/src/BookReader/ModeCoordinateSpace.js +29 -0
- package/src/BookReader/ModeSmoothZoom.js +312 -0
- package/src/BookReader/ModeThumb.js +20 -12
- package/src/BookReader/Navbar/Navbar.js +130 -53
- package/src/BookReader/PageContainer.js +120 -23
- package/src/BookReader/ReduceSet.js +2 -2
- package/src/BookReader/Toolbar/Toolbar.js +18 -40
- package/src/BookReader/events.js +2 -3
- package/src/BookReader/options.js +87 -16
- package/src/BookReader/utils/HTMLDimensionsCacher.js +44 -0
- package/src/BookReader/utils/ScrollClassAdder.js +31 -0
- package/src/BookReader/utils/SelectionObserver.js +45 -0
- package/src/BookReader/utils/classes.js +1 -1
- package/src/BookReader/utils.js +136 -12
- package/src/BookReader.js +641 -1192
- package/src/BookReaderPlugin.js +52 -0
- package/src/assets/icons/magnify-minus.svg +3 -7
- package/src/assets/icons/magnify-plus.svg +3 -7
- package/src/assets/icons/voice.svg +1 -0
- package/src/assets/images/hypothesis.ico +0 -0
- package/src/assets/images/icon_experiment.svg +1 -0
- package/src/assets/images/translate.svg +1 -0
- package/src/assets/images/unviewable_page.png +0 -0
- package/src/assets/silence.mp3 +0 -0
- package/src/css/BookReader.scss +1 -5
- package/src/css/_BRBookmarks.scss +1 -1
- package/src/css/_BRComponent.scss +1 -1
- package/src/css/_BRicon.scss +8 -2
- package/src/css/_BRmain.scss +16 -3
- package/src/css/_BRnav.scss +12 -66
- package/src/css/_BRpages.scss +163 -43
- package/src/css/_BRsearch.scss +69 -30
- package/src/css/_BRtoolbar.scss +5 -5
- package/src/css/_TextSelection.scss +129 -24
- package/src/css/_colorbox.scss +2 -2
- package/src/css/_controls.scss +24 -7
- package/src/css/_icons.scss +1 -1
- package/src/ia-bookreader/ia-bookreader.js +224 -0
- package/src/plugins/plugin.archive_analytics.js +84 -78
- package/src/plugins/plugin.autoplay.js +99 -104
- package/src/plugins/plugin.chapters.js +314 -205
- package/src/plugins/plugin.experiments.js +321 -0
- package/src/plugins/plugin.iframe.js +1 -1
- package/src/plugins/plugin.iiif.js +141 -0
- package/src/plugins/plugin.resume.js +54 -51
- package/src/plugins/plugin.text_selection.js +510 -219
- package/src/plugins/plugin.vendor-fullscreen.js +5 -5
- package/src/plugins/search/plugin.search.js +370 -392
- package/src/plugins/search/utils.js +43 -0
- package/src/plugins/search/view.js +49 -67
- package/src/plugins/translate/TranslationManager.js +162 -0
- package/src/plugins/translate/plugin.translate.js +523 -0
- package/src/plugins/tts/AbstractTTSEngine.js +78 -49
- package/src/plugins/tts/FestivalTTSEngine.js +20 -30
- package/src/plugins/tts/PageChunk.js +33 -21
- package/src/plugins/tts/PageChunkIterator.js +11 -17
- package/src/plugins/tts/WebTTSEngine.js +131 -91
- package/src/plugins/tts/plugin.tts.js +344 -350
- package/src/plugins/tts/utils.js +49 -47
- package/src/plugins/url/UrlPlugin.js +191 -0
- package/src/plugins/{plugin.url.js → url/plugin.url.js} +44 -15
- package/src/util/TextSelectionManager.js +282 -0
- package/src/util/browserSniffing.js +33 -1
- package/src/util/cache.js +20 -0
- package/src/util/docCookies.js +21 -2
- package/src/util/strings.js +1 -0
- package/.babelrc +0 -12
- package/.dependabot/config.yml +0 -6
- package/.eslintrc.js +0 -50
- package/.gitattributes +0 -2
- package/.github/ISSUE_TEMPLATE/bug.md +0 -32
- package/.github/ISSUE_TEMPLATE/feature-request.md +0 -30
- package/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -15
- package/.github/workflows/node.js.yml +0 -37
- package/.github/workflows/npm-publish.yml +0 -47
- package/.testcaferc.json +0 -5
- package/BookReader/bookreader-component-bundle.js +0 -1450
- package/BookReader/bookreader-component-bundle.js.LICENSE.txt +0 -38
- package/BookReader/bookreader-component-bundle.js.map +0 -1
- package/BookReader/jquery-1.10.1.js +0 -2
- package/BookReader/jquery-1.10.1.js.LICENSE.txt +0 -24
- package/BookReader/plugins/plugin.menu_toggle.js +0 -2
- package/BookReader/plugins/plugin.menu_toggle.js.map +0 -1
- package/BookReader/plugins/plugin.mobile_nav.js +0 -2
- package/BookReader/plugins/plugin.mobile_nav.js.map +0 -1
- package/BookReaderDemo/BookReaderDemo.css +0 -41
- package/BookReaderDemo/BookReaderJSAdvanced.js +0 -115
- package/BookReaderDemo/BookReaderJSAutoplay.js +0 -56
- package/BookReaderDemo/BookReaderJSSimple.js +0 -55
- package/BookReaderDemo/IIIFBookReader.js +0 -207
- package/BookReaderDemo/assets/v5/Bookreader-logo-cool-grad.svg +0 -1
- package/BookReaderDemo/assets/v5/Bookreader-logo-flat.svg +0 -1
- package/BookReaderDemo/assets/v5/Bookreader-logo-hex-cool-grad.png +0 -0
- package/BookReaderDemo/assets/v5/Bookreader-logo-hex-flat.png +0 -0
- package/BookReaderDemo/assets/v5/Bookreader-logo-lines.png +0 -0
- package/BookReaderDemo/assets/v5/Bookreader-logo-lines.svg +0 -1
- package/BookReaderDemo/assets/v5/Bookreader-logo-warm.svg +0 -1
- package/BookReaderDemo/assets/v5/bookreader-logo-renders@1x.png +0 -0
- package/BookReaderDemo/assets/v5/bookreader-logo-renders@2x.png +0 -0
- package/BookReaderDemo/assets/v5/bookreader-v5-screenshot.png +0 -0
- package/BookReaderDemo/bookreader-template-bundle.js +0 -7178
- package/BookReaderDemo/demo-advanced.html +0 -33
- package/BookReaderDemo/demo-autoplay.html +0 -38
- package/BookReaderDemo/demo-embed-iframe-src.html +0 -84
- package/BookReaderDemo/demo-embed.html +0 -26
- package/BookReaderDemo/demo-fullscreen-mobile.html +0 -36
- package/BookReaderDemo/demo-fullscreen.html +0 -33
- package/BookReaderDemo/demo-iiif.html +0 -34
- package/BookReaderDemo/demo-iiif.js +0 -26
- package/BookReaderDemo/demo-internetarchive.html +0 -74
- package/BookReaderDemo/demo-multiple.html +0 -43
- package/BookReaderDemo/demo-plugin-menu-toggle.html +0 -34
- package/BookReaderDemo/demo-preview-pages.html +0 -1092
- package/BookReaderDemo/demo-simple.html +0 -34
- package/BookReaderDemo/demo-vendor-fullscreen.html +0 -36
- package/BookReaderDemo/immersion-1up.html +0 -64
- package/BookReaderDemo/immersion-mode.html +0 -35
- package/BookReaderDemo/toggle_controls.html +0 -53
- package/BookReaderDemo/view_mode.html +0 -39
- package/BookReaderDemo/viewmode-cycle.html +0 -41
- package/CHANGELOG.md +0 -493
- package/CONTRIBUTING.md +0 -7
- package/codecov.yml +0 -17
- package/index.html +0 -31
- package/karma.conf.js +0 -23
- package/screenshot.png +0 -0
- package/scripts/postversion.js +0 -10
- package/scripts/preversion.js +0 -14
- package/scripts/version.js +0 -26
- package/src/BookNavigator/BookModel.js +0 -14
- package/src/BookNavigator/BookNavigator.js +0 -446
- package/src/BookNavigator/assets/book-loader.js +0 -27
- package/src/BookNavigator/br-fullscreen-mgr.js +0 -83
- package/src/BookNavigator/search/a-search-result.js +0 -55
- package/src/BookReader/DebugConsole.js +0 -54
- package/src/BookReaderComponent/BookReaderComponent.js +0 -112
- package/src/ItemNavigator/ItemNavigator.js +0 -376
- package/src/ItemNavigator/providers/sharing.js +0 -29
- package/src/css/_MobileNav.scss +0 -194
- package/src/dragscrollable-br.js +0 -261
- package/src/plugins/menu_toggle/plugin.menu_toggle.js +0 -324
- package/src/plugins/plugin.mobile_nav.js +0 -287
- package/tests/BookReader/BookModel.test.js +0 -312
- package/tests/BookReader/BookReaderPublicFunctions.test.js +0 -171
- package/tests/BookReader/DebugConsole.test.js +0 -25
- package/tests/BookReader/ImageCache.test.js +0 -150
- package/tests/BookReader/Mode1Up.test.js +0 -164
- package/tests/BookReader/Mode2Up.test.js +0 -247
- package/tests/BookReader/Navbar/Navbar.test.js +0 -169
- package/tests/BookReader/PageContainer.test.js +0 -115
- package/tests/BookReader/ReduceSet.test.js +0 -38
- package/tests/BookReader/Toolbar/Toolbar.test.js +0 -26
- package/tests/BookReader/utils/classes.test.js +0 -88
- package/tests/BookReader/utils.test.js +0 -109
- package/tests/BookReader.options.test.js +0 -39
- package/tests/BookReader.test.js +0 -301
- package/tests/e2e/README.md +0 -75
- package/tests/e2e/autoplay.test.js +0 -13
- package/tests/e2e/base.test.js +0 -35
- package/tests/e2e/helpers/base.js +0 -263
- package/tests/e2e/helpers/debug.js +0 -13
- package/tests/e2e/helpers/desktopSearch.js +0 -72
- package/tests/e2e/helpers/mobileSearch.js +0 -85
- package/tests/e2e/helpers/mockSearch.js +0 -93
- package/tests/e2e/helpers/rightToLeft.js +0 -29
- package/tests/e2e/ia-production/ia-prod-base.js +0 -17
- package/tests/e2e/models/BookReader.js +0 -11
- package/tests/e2e/models/Navigation.js +0 -56
- package/tests/e2e/rightToLeft.test.js +0 -20
- package/tests/e2e/viewmode.test.js +0 -37
- package/tests/karma/BookNavigator/book-navigator.test.js +0 -132
- package/tests/karma/BookNavigator/bookmarks/bookmark-edit.test.js +0 -133
- package/tests/karma/BookNavigator/bookmarks/bookmarks-list.test.js +0 -222
- package/tests/karma/BookNavigator/search/search-provider.test.js +0 -23
- package/tests/karma/BookNavigator/search/search-results.test.js +0 -240
- package/tests/karma/BookNavigator/visual-adjustments.test.js +0 -201
- package/tests/plugins/menu_toggle/plugin.menu_toggle.test.js +0 -68
- package/tests/plugins/plugin.archive_analytics.test.js +0 -23
- package/tests/plugins/plugin.autoplay.test.js +0 -52
- package/tests/plugins/plugin.chapters.test.js +0 -130
- package/tests/plugins/plugin.iframe.test.js +0 -42
- package/tests/plugins/plugin.mobile_nav.test.js +0 -66
- package/tests/plugins/plugin.resume.test.js +0 -98
- package/tests/plugins/plugin.text_selection.test.js +0 -203
- package/tests/plugins/plugin.url.test.js +0 -129
- package/tests/plugins/plugin.vendor-fullscreen.test.js +0 -65
- package/tests/plugins/search/plugin.search.test.js +0 -173
- package/tests/plugins/search/plugin.search.view.test.js +0 -106
- package/tests/plugins/tts/AbstractTTSEngine.test.js +0 -153
- package/tests/plugins/tts/FestivalTTSEngine.test.js +0 -59
- package/tests/plugins/tts/PageChunk.test.js +0 -57
- package/tests/plugins/tts/PageChunkIterator.test.js +0 -179
- package/tests/plugins/tts/WebTTSEngine.test.js +0 -126
- package/tests/plugins/tts/utils.test.js +0 -133
- package/tests/util/browserSniffing.test.js +0 -56
- package/tests/util/docCookies.test.js +0 -15
- package/tests/util/strings.test.js +0 -63
- package/tests/utils.js +0 -42
- package/webpack.config.js +0 -86
|
@@ -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 & You');
|
|
24
|
-
expect(escapeHTML('Me > You')).toEqual('Me > You');
|
|
25
|
-
expect(escapeHTML('Me < You')).toEqual('Me < You');
|
|
26
|
-
expect(escapeHTML('Me " You')).toEqual('Me " 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,39 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import BookReader from '../src/BookReader.js';
|
|
3
|
-
|
|
4
|
-
beforeAll(() => {
|
|
5
|
-
document.body.innerHTML = '<div id="BookReader">';
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
afterEach(() => {
|
|
9
|
-
jest.clearAllMocks();
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
describe('BookReader options', () => {
|
|
13
|
-
describe('`autoResize`', () => {
|
|
14
|
-
it('is on by default', () => {
|
|
15
|
-
const br = new BookReader();
|
|
16
|
-
br.init();
|
|
17
|
-
expect(br.options.autoResize).toBe(true);
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
describe('`startFullscreen`', () => {
|
|
22
|
-
it('initializes BookReader to fullscreen', () => {
|
|
23
|
-
const br = new BookReader({
|
|
24
|
-
startFullscreen: true
|
|
25
|
-
});
|
|
26
|
-
br.init();
|
|
27
|
-
|
|
28
|
-
expect(document.getElementById('BookReader').classList.contains('br-ui-full')).toBe(true);
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
describe('`useSrcSet`', () => {
|
|
33
|
-
it('is on by default', () => {
|
|
34
|
-
const br = new BookReader();
|
|
35
|
-
br.init();
|
|
36
|
-
expect(br.options.autoResize).toBe(true);
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
});
|
package/tests/BookReader.test.js
DELETED
|
@@ -1,301 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import BookReader from '../src/BookReader.js';
|
|
3
|
-
import '../src/plugins/plugin.resume.js';
|
|
4
|
-
import '../src/plugins/plugin.url.js';
|
|
5
|
-
|
|
6
|
-
let br;
|
|
7
|
-
beforeAll(() => {
|
|
8
|
-
document.body.innerHTML = '<div id="BookReader">';
|
|
9
|
-
br = new BookReader();
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
afterEach(() => {
|
|
13
|
-
jest.clearAllMocks();
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
test('has registered PostInit events', () => {
|
|
17
|
-
expect(BookReader.eventNames.PostInit).toBeTruthy();
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
test('has registered zoom events', () => {
|
|
21
|
-
expect(BookReader.eventNames.zoomIn).toBeTruthy();
|
|
22
|
-
expect(BookReader.eventNames.zoomOut).toBeTruthy();
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
test('has registered view type selected events', () => {
|
|
26
|
-
expect(BookReader.eventNames['1PageViewSelected']).toBeTruthy();
|
|
27
|
-
expect(BookReader.eventNames['2PageViewSelected']).toBeTruthy();
|
|
28
|
-
expect(BookReader.eventNames['3PageViewSelected']).toBeTruthy();
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
test('has registered fullscreen toggle event', () => {
|
|
32
|
-
expect(BookReader.eventNames.fullscreenToggled).toBeTruthy();
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
test('checks cookie when initParams called', () => {
|
|
36
|
-
br.getResumeValue = jest.fn(() => 15);
|
|
37
|
-
br.urlReadFragment = jest.fn(() => '');
|
|
38
|
-
|
|
39
|
-
const params = br.initParams();
|
|
40
|
-
expect(br.getResumeValue).toHaveBeenCalledTimes(1);
|
|
41
|
-
expect(params.init).toBe(true);
|
|
42
|
-
expect(params.index).toBe(15);
|
|
43
|
-
expect(params.fragmentChange).toBe(true);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
test('does not check cookie when initParams called', () => {
|
|
47
|
-
br.getResumeValue = jest.fn(() => null);
|
|
48
|
-
br.urlReadFragment = jest.fn(() => '');
|
|
49
|
-
br.options.enablePageResume = false;
|
|
50
|
-
|
|
51
|
-
const params = br.initParams();
|
|
52
|
-
expect(br.getResumeValue).toHaveBeenCalledTimes(0);
|
|
53
|
-
expect(params.init).toBe(true);
|
|
54
|
-
expect(params.index).toBe(0);
|
|
55
|
-
expect(params.fragmentChange).toBe(false);
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
test('gets index from fragment when both fragment and cookie when InitParams called', () => {
|
|
59
|
-
br.getResumeValue = jest.fn(() => 15);
|
|
60
|
-
br.urlReadFragment = jest.fn(() => 'page/n4');
|
|
61
|
-
br.options.enablePageResume = true;
|
|
62
|
-
|
|
63
|
-
const params = br.initParams();
|
|
64
|
-
expect(br.getResumeValue).toHaveBeenCalledTimes(1);
|
|
65
|
-
expect(params.init).toBe(true);
|
|
66
|
-
expect(params.index).toBe(4);
|
|
67
|
-
expect(params.fragmentChange).toBe(true);
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
test('sets prevReadMode when init called', () => {
|
|
71
|
-
br.init();
|
|
72
|
-
expect(br.prevReadMode).toBeTruthy();
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
// Default behavior same in
|
|
76
|
-
// BookReader.prototype.drawLeafsThumbnail
|
|
77
|
-
// BookReader.prototype.getPrevReadMode
|
|
78
|
-
test('sets prevPageMode if initial mode is thumb', () => {
|
|
79
|
-
br.urlReadFragment = jest.fn(() => 'page/n4/mode/thumb');
|
|
80
|
-
|
|
81
|
-
br.init();
|
|
82
|
-
expect(br.prevReadMode).toBe(BookReader.constMode1up);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
test('calls switchMode with init option when init called', () => {
|
|
86
|
-
br.switchMode = jest.fn();
|
|
87
|
-
|
|
88
|
-
br.init();
|
|
89
|
-
expect(br.switchMode.mock.calls[0][1])
|
|
90
|
-
.toHaveProperty('init', true);
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
test('has suppressFragmentChange true when init with no input', () => {
|
|
94
|
-
br.getResumeValue = jest.fn(() => null);
|
|
95
|
-
br.urlReadFragment = jest.fn(() => '');
|
|
96
|
-
br.urlReadHashFragment = jest.fn(() => '');
|
|
97
|
-
br.switchMode = jest.fn();
|
|
98
|
-
|
|
99
|
-
br.init();
|
|
100
|
-
expect(br.switchMode.mock.calls[0][1])
|
|
101
|
-
.toHaveProperty('suppressFragmentChange', true);
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
test('has suppressFragmentChange false when init with cookie', () => {
|
|
105
|
-
br.getResumeValue = jest.fn(() => 5);
|
|
106
|
-
br.urlReadFragment = jest.fn(() => '');
|
|
107
|
-
br.switchMode = jest.fn();
|
|
108
|
-
|
|
109
|
-
br.init();
|
|
110
|
-
expect(br.switchMode.mock.calls[0][1])
|
|
111
|
-
.toHaveProperty('suppressFragmentChange', false);
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
test('has suppressFragmentChange false when init with fragment', () => {
|
|
115
|
-
br.getResumeValue = jest.fn(() => null);
|
|
116
|
-
br.urlReadFragment = jest.fn(() => 'mode/1up');
|
|
117
|
-
br.switchMode = jest.fn();
|
|
118
|
-
|
|
119
|
-
br.init();
|
|
120
|
-
expect(br.switchMode.mock.calls[0][1])
|
|
121
|
-
.toHaveProperty('suppressFragmentChange', false);
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
test('has suppressFragmentChange false when init with hash fragment', () => {
|
|
125
|
-
br.getResumeValue = jest.fn(() => null);
|
|
126
|
-
br.urlReadFragment = jest.fn(() => '');
|
|
127
|
-
br.urlReadHashFragment = jest.fn(() => 'mode/1up');
|
|
128
|
-
br.switchMode = jest.fn();
|
|
129
|
-
br.options.urlMode = 'history',
|
|
130
|
-
|
|
131
|
-
br.init();
|
|
132
|
-
expect(br.switchMode.mock.calls[0][1])
|
|
133
|
-
.toHaveProperty('suppressFragmentChange', false);
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
test('adds q= term to urlMode=history query string', () => {
|
|
137
|
-
expect(br.queryStringFromParams(
|
|
138
|
-
{ search: 'test value' },
|
|
139
|
-
'name=value',
|
|
140
|
-
'history'
|
|
141
|
-
)).toBe('?name=value&q=test+value');
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
test('replaces q= term in urlMode=history query string', () => {
|
|
145
|
-
expect(br.queryStringFromParams(
|
|
146
|
-
{ search: 'test+value' },
|
|
147
|
-
'q=foo&a=1&b=2&c=3',
|
|
148
|
-
'history'
|
|
149
|
-
)).toBe('?q=test%2Bvalue&a=1&b=2&c=3');
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
test('does not add q= term to urlMode=hash query string', () => {
|
|
153
|
-
expect(br.queryStringFromParams(
|
|
154
|
-
{ search: 'test value' },
|
|
155
|
-
'name=value',
|
|
156
|
-
'hash'
|
|
157
|
-
)).toBe('?name=value');
|
|
158
|
-
});
|
|
159
|
-
|
|
160
|
-
test('_getPageURISrcset with 0 page book', () => {
|
|
161
|
-
br._models.book.getNumLeafs = jest.fn(() => 0);
|
|
162
|
-
br._models.book.getPageURI = jest.fn((index, scale, rotate) => "correctURL.png&scale=" + scale);
|
|
163
|
-
br.init();
|
|
164
|
-
expect(br._getPageURISrcset(5, undefined, undefined)).toBe("");
|
|
165
|
-
});
|
|
166
|
-
|
|
167
|
-
test('_getPageURISrcset with negative index', () => {
|
|
168
|
-
br._models.book.getNumLeafs = jest.fn(() => 0);
|
|
169
|
-
br._models.book.getPageURI = jest.fn((index, scale, rotate) => "correctURL.png&scale=" + scale);
|
|
170
|
-
br.init();
|
|
171
|
-
expect(br._getPageURISrcset(-7, undefined, undefined)).toBe("");
|
|
172
|
-
});
|
|
173
|
-
|
|
174
|
-
test('_getPageURISrcset with 0 elements in srcset', () => {
|
|
175
|
-
br._models.book.getNumLeafs = jest.fn(() => 30);
|
|
176
|
-
br._models.book.getPageURI = jest.fn((index, scale, rotate) => "correctURL.png&scale=" + scale);
|
|
177
|
-
br.init();
|
|
178
|
-
expect(br._getPageURISrcset(5, 1, undefined)).toBe("");
|
|
179
|
-
});
|
|
180
|
-
|
|
181
|
-
test('_getPageURISrcset with 2 elements in srcset', () => {
|
|
182
|
-
br._models.book.getNumLeafs = jest.fn(() => 30);
|
|
183
|
-
br._models.book.getPageURI = jest.fn((index, scale, rotate) => "correctURL.png&scale=" + scale);
|
|
184
|
-
br.init();
|
|
185
|
-
expect(br._getPageURISrcset(5, 5, undefined)).toBe("correctURL.png&scale=2 2x, correctURL.png&scale=1 4x");
|
|
186
|
-
});
|
|
187
|
-
|
|
188
|
-
test('_getPageURISrcset with the most elements in srcset', () => {
|
|
189
|
-
br._models.book.getNumLeafs = jest.fn(() => 30);
|
|
190
|
-
br._models.book.getPageURI = jest.fn((index, scale, rotate) => "correctURL.png&scale=" + scale);
|
|
191
|
-
br.init();
|
|
192
|
-
expect(br._getPageURISrcset(5, 35, undefined)).toBe("correctURL.png&scale=16 2x, correctURL.png&scale=8 4x, correctURL.png&scale=4 8x, correctURL.png&scale=2 16x, correctURL.png&scale=1 32x");
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
describe('quantizeReduce', () => {
|
|
196
|
-
const quantizeReduce = BookReader.prototype.quantizeReduce;
|
|
197
|
-
const SAMPLE_FACTORS = [
|
|
198
|
-
{ reduce: 0.5 },
|
|
199
|
-
{ reduce: 1 },
|
|
200
|
-
{ reduce: 2 },
|
|
201
|
-
{ reduce: 3 },
|
|
202
|
-
{ reduce: 4 },
|
|
203
|
-
{ reduce: 6 },
|
|
204
|
-
];
|
|
205
|
-
test('Number larger than max', () => {
|
|
206
|
-
expect(quantizeReduce(10, SAMPLE_FACTORS)).toBe(6);
|
|
207
|
-
});
|
|
208
|
-
|
|
209
|
-
test('Number lower than max', () => {
|
|
210
|
-
expect(quantizeReduce(0.25, SAMPLE_FACTORS)).toBe(0.5);
|
|
211
|
-
});
|
|
212
|
-
|
|
213
|
-
test('Number directly between two reduction factors chooses first factor', () => {
|
|
214
|
-
expect(quantizeReduce(5, SAMPLE_FACTORS)).toBe(4);
|
|
215
|
-
});
|
|
216
|
-
|
|
217
|
-
test('Exact match', () => {
|
|
218
|
-
expect(quantizeReduce(2, SAMPLE_FACTORS)).toBe(2);
|
|
219
|
-
});
|
|
220
|
-
|
|
221
|
-
test('Closer to a lower boundary', () => {
|
|
222
|
-
expect(quantizeReduce(1.115, SAMPLE_FACTORS)).toBe(1);
|
|
223
|
-
});
|
|
224
|
-
|
|
225
|
-
test('Closer to an upper bound', () => {
|
|
226
|
-
expect(quantizeReduce(1.95, SAMPLE_FACTORS)).toBe(2);
|
|
227
|
-
});
|
|
228
|
-
|
|
229
|
-
test('Only one reduction factor', () => {
|
|
230
|
-
expect(quantizeReduce(17, [{reduce: 10}])).toBe(10);
|
|
231
|
-
});
|
|
232
|
-
});
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
describe('nextReduce', () => {
|
|
236
|
-
describe('Test matrix', () => {
|
|
237
|
-
const nextReduce = BookReader.prototype.nextReduce;
|
|
238
|
-
const SAMPLE_FACTORS = [
|
|
239
|
-
{ reduce: 0.5 },
|
|
240
|
-
{ reduce: 1 },
|
|
241
|
-
{ reduce: 2 },
|
|
242
|
-
{ reduce: 3 },
|
|
243
|
-
{ reduce: 3.3, autofit: "width" },
|
|
244
|
-
{ reduce: 4 },
|
|
245
|
-
{ reduce: 6 },
|
|
246
|
-
{ reduce: 6.1, autofit: "height" },
|
|
247
|
-
// auto doesn't get read by nextReduce (bug)
|
|
248
|
-
// It looks like width/height are set for 1up, and auto is set for 2up,
|
|
249
|
-
// and neither is set for thumb
|
|
250
|
-
{ reduce: 6.2, autofit: "auto" }
|
|
251
|
-
];
|
|
252
|
-
|
|
253
|
-
const currentReduces = [
|
|
254
|
-
{ name: 'Exact match', value: 2 },
|
|
255
|
-
{ name: 'In-between', value: 4.5 },
|
|
256
|
-
{ name: '< Min', value: 0.25 },
|
|
257
|
-
{ name: '> Max', value: 10 },
|
|
258
|
-
|
|
259
|
-
{ name: '= Min', value: 0.5 },
|
|
260
|
-
{ name: '= Max', value: 6.2 },
|
|
261
|
-
];
|
|
262
|
-
|
|
263
|
-
const directions = [ 'in', 'out', 'width', 'height', 'auto' ];
|
|
264
|
-
|
|
265
|
-
const expectations = [
|
|
266
|
-
// currentReduces <->
|
|
267
|
-
// v^ directions
|
|
268
|
-
/* 2, 4.5, 0.25, 10, 0.5, 6.2 */
|
|
269
|
-
/* in */ [ 1, 4, 0.5, 6.2, 0.5, 6.1 ],
|
|
270
|
-
/* out */ [ 3, 6, 0.5, 6.2, 1, 6.2 ],
|
|
271
|
-
/* width */ [ 3.3, 3.3, 3.3, 3.3, 3.3, 3.3 ],
|
|
272
|
-
/* height */ [ 6.1, 6.1, 6.1, 6.1, 6.1, 6.1 ],
|
|
273
|
-
/* auto */ [ 6.2, 6.2, 6.2, 6.2, 6.2, 6.2 ],
|
|
274
|
-
];
|
|
275
|
-
|
|
276
|
-
for (const [y, row] of expectations.entries()) {
|
|
277
|
-
for (const [x, expectedValue] of row.entries()) {
|
|
278
|
-
test(`${currentReduces[x].name} ${directions[y]}`, () => {
|
|
279
|
-
expect(nextReduce(currentReduces[x].value, directions[y], SAMPLE_FACTORS).reduce)
|
|
280
|
-
.toBe(expectedValue);
|
|
281
|
-
});
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
});
|
|
285
|
-
|
|
286
|
-
describe('No matching reduction', () => {
|
|
287
|
-
const nextReduce = BookReader.prototype.nextReduce;
|
|
288
|
-
const SAMPLE_FACTORS = [
|
|
289
|
-
{ reduce: 0.5 },
|
|
290
|
-
{ reduce: 1 },
|
|
291
|
-
{ reduce: 2 },
|
|
292
|
-
{ reduce: 3 },
|
|
293
|
-
];
|
|
294
|
-
|
|
295
|
-
test('Returns first reduction when no match found', () => {
|
|
296
|
-
expect(nextReduce(2, 'width', SAMPLE_FACTORS).reduce).toBe(0.5);
|
|
297
|
-
expect(nextReduce(2, 'height', SAMPLE_FACTORS).reduce).toBe(0.5);
|
|
298
|
-
expect(nextReduce(2, 'auto', SAMPLE_FACTORS).reduce).toBe(0.5);
|
|
299
|
-
});
|
|
300
|
-
});
|
|
301
|
-
});
|
package/tests/e2e/README.md
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
# TestCafe End to End (e2e) Testing
|
|
2
|
-
|
|
3
|
-
## Running
|
|
4
|
-
|
|
5
|
-
To run all tests in all browsers currently specified, run
|
|
6
|
-
|
|
7
|
-
`npm run test:e2e`
|
|
8
|
-
|
|
9
|
-
The list of browsers TestCafe will attempt to use are stored in
|
|
10
|
-
`.testcaferc.json`.
|
|
11
|
-
|
|
12
|
-
The test runner will pick up any file within the tests/e2e directory or
|
|
13
|
-
subdirectories that ends in `test.js`. If you would like to abstract some code
|
|
14
|
-
and place it alongside the test fixtures, as long as the file name does not
|
|
15
|
-
end in this suffix, the test runner won't pick it up and attempt to set up a
|
|
16
|
-
test fixture.
|
|
17
|
-
|
|
18
|
-
### Testing a specific browser
|
|
19
|
-
|
|
20
|
-
To run all tests in one or more specified browsers, supply the names of the
|
|
21
|
-
application executables after the command above. For example, if you only want
|
|
22
|
-
to run tests in Chrome, run `npm run test:e2e chrome`. To run
|
|
23
|
-
in both Chrome and Safari, run `npm run test:e2e chrome,safari`.
|
|
24
|
-
|
|
25
|
-
### Testing in Chrome using device emulation
|
|
26
|
-
|
|
27
|
-
You can specify device presets or specify custom parameters for Chrome's
|
|
28
|
-
device emulation when starting tests. For example:
|
|
29
|
-
|
|
30
|
-
`npm run test:e2e "chrome:emulation:width=414;height=736;mobile=true;orientation=vertical;touch=true"`
|
|
31
|
-
|
|
32
|
-
### Testing on remote devices
|
|
33
|
-
|
|
34
|
-
If you need to run tests on other devices like a phone, tablet, or other
|
|
35
|
-
computer, you can specify the number of browsers on the remote devices you'd
|
|
36
|
-
like to connect to the test runner. For example, to test Chrome on both a
|
|
37
|
-
phone and tablet, you'd specify '2' remote browsers. If you're only testing
|
|
38
|
-
on a phone, but are testing in Chrome and Safari, you'd also specify '2'.
|
|
39
|
-
|
|
40
|
-
`npm test:e2e remote:2`
|
|
41
|
-
|
|
42
|
-
This will provide you with a URL that you then visit in each browser. The URL
|
|
43
|
-
will look something like `http://127.0.0.1:52902/browser/connect`.
|
|
44
|
-
|
|
45
|
-
### Running a specific fixture
|
|
46
|
-
|
|
47
|
-
To run a particular fixture, add the path to the file at the end of your arguments list.
|
|
48
|
-
|
|
49
|
-
`npm run test:e2e chrome tests/e2e/example.test.js`
|
|
50
|
-
|
|
51
|
-
## Pending (skip) tests
|
|
52
|
-
|
|
53
|
-
You can skip any tests by calling the method `.skip` on the test object rather
|
|
54
|
-
than call the test function directly. If you have a test definition like:
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
test('Subnav opened when primary nav category clicked', async (t) => {
|
|
58
|
-
const textsTophat = Selector('.row.texts');
|
|
59
|
-
await t.expect(await textsTophat.visible).notOk();
|
|
60
|
-
await t.click('[data-top-kind=texts]');
|
|
61
|
-
await t.expect(await textsTophat.visible).ok();
|
|
62
|
-
});
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
You would skip it by changing the `test` call to `test.skip`.
|
|
66
|
-
|
|
67
|
-
## Running only one test
|
|
68
|
-
|
|
69
|
-
Similarly, you can use the `.only` method to skip all other tests and only run
|
|
70
|
-
the one specified.
|
|
71
|
-
|
|
72
|
-
```
|
|
73
|
-
test.only('Subnav opened when primary nav category clicked', async (t) => {
|
|
74
|
-
```
|
|
75
|
-
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { ClientFunction } from 'testcafe';
|
|
2
|
-
|
|
3
|
-
const { BASE_URL } = process.env;
|
|
4
|
-
const getLocationHref = ClientFunction(() => window.location.href.toString());
|
|
5
|
-
const FLIP_SPEED = 1000;
|
|
6
|
-
const FIRST_PAGE_DELAY = 2000;
|
|
7
|
-
|
|
8
|
-
fixture `Autoplay plugin`.page `${BASE_URL}demo-autoplay.html`;
|
|
9
|
-
|
|
10
|
-
test('page auto-advances after allotted flip speed and delay', async t => {
|
|
11
|
-
await t.wait(2 * FLIP_SPEED + FIRST_PAGE_DELAY);
|
|
12
|
-
await t.expect(getLocationHref()).match(/page\/n3/);
|
|
13
|
-
});
|
package/tests/e2e/base.test.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { runBaseTests } from './helpers/base';
|
|
2
|
-
import BookReader from './models/BookReader';
|
|
3
|
-
import { runDesktopSearchTests } from './helpers/desktopSearch';
|
|
4
|
-
// import { runMobileSearchTests } from './helpers/mobileSearch';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const { BASE_URL } = process.env;
|
|
8
|
-
const OCAIDS = [
|
|
9
|
-
'theworksofplato01platiala',
|
|
10
|
-
// Removed because failing test 'Canonical URL with cookie shows paramters'
|
|
11
|
-
// in tests/e2e/helpers/base.js
|
|
12
|
-
// Cookie path should be:
|
|
13
|
-
// /BookReaderDemo/demo-ia-olivertwist.html
|
|
14
|
-
// Cookie path is:
|
|
15
|
-
// /BookReaderDemo/demo-ia-olivertwist.html/page/n13/mode/2up
|
|
16
|
-
// 'demo-ia-olivertwist.html',
|
|
17
|
-
];
|
|
18
|
-
const DEMO_PATH = 'demo-internetarchive.html?ocaid=';
|
|
19
|
-
|
|
20
|
-
OCAIDS.forEach(ocaid => {
|
|
21
|
-
const url = `${BASE_URL}${DEMO_PATH }${ocaid}`;
|
|
22
|
-
|
|
23
|
-
fixture `Base Tests for: ${ocaid}`.page `${url}`;
|
|
24
|
-
runBaseTests(new BookReader());
|
|
25
|
-
|
|
26
|
-
fixture `Desktop Search Tests for: ${ocaid}`
|
|
27
|
-
.page `${url}`;
|
|
28
|
-
runDesktopSearchTests(new BookReader());
|
|
29
|
-
|
|
30
|
-
// fixture `Mobile Search Tests for: ${ocaid}`
|
|
31
|
-
// .page `${url}`
|
|
32
|
-
// runMobileSearchTests(new BookReader());
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
});
|