@internetarchive/bookreader 5.0.0-67 → 5.0.0-68
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/BookReader.css +53 -891
- package/BookReader/BookReader.js +1 -1
- package/BookReader/BookReader.js.map +1 -1
- package/BookReader/ia-bookreader-bundle.js +50 -48
- package/BookReader/ia-bookreader-bundle.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 +1 -1
- package/BookReader/plugins/plugin.chapters.js.map +1 -1
- package/BookReader/plugins/plugin.search.js +1 -1
- package/BookReader/plugins/plugin.search.js.map +1 -1
- package/BookReader/plugins/plugin.text_selection.js +1 -1
- package/BookReader/plugins/plugin.text_selection.js.map +1 -1
- package/BookReader/plugins/plugin.tts.js +1 -1
- package/BookReader/plugins/plugin.tts.js.map +1 -1
- package/BookReaderDemo/BookReaderDemo.css +0 -18
- package/BookReaderDemo/BookReaderJSAdvanced.js +0 -3
- package/BookReaderDemo/demo-autoplay.html +0 -2
- package/BookReaderDemo/demo-fullscreen-mobile.html +1 -4
- package/BookReaderDemo/demo-fullscreen.html +0 -3
- package/BookReaderDemo/demo-iiif.js +0 -1
- package/BookReaderDemo/demo-vendor-fullscreen.html +0 -3
- package/BookReaderDemo/immersion-1up.html +0 -1
- package/BookReaderDemo/immersion-mode.html +0 -3
- package/CHANGELOG.md +5 -0
- package/package.json +7 -8
- package/src/BookReader/BookModel.js +0 -12
- package/src/BookReader/Mode1Up.js +1 -1
- package/src/BookReader/Mode1UpLit.js +1 -1
- package/src/BookReader/events.js +0 -1
- package/src/BookReader.js +1 -2
- package/src/css/BookReader.scss +1 -5
- package/src/css/_BRnav.scss +0 -8
- package/src/plugins/plugin.autoplay.js +1 -2
- package/src/plugins/search/plugin.search.js +0 -3
- package/tests/e2e/base.test.js +3 -11
- package/tests/e2e/helpers/base.js +26 -26
- package/tests/e2e/helpers/rightToLeft.js +4 -4
- package/tests/e2e/helpers/{desktopSearch.js → search.js} +19 -19
- package/tests/e2e/models/Navigation.js +16 -42
- package/tests/e2e/viewmode.test.js +3 -3
- package/tests/jest/plugins/plugin.chapters.test.js +0 -1
- package/tests/jest/plugins/search/plugin.search.view.test.js +0 -1
- package/webpack.config.js +0 -1
- package/BookReader/plugins/plugin.mobile_nav.js +0 -2
- package/BookReader/plugins/plugin.mobile_nav.js.map +0 -1
- package/src/css/_MobileNav.scss +0 -168
- package/src/plugins/plugin.mobile_nav.js +0 -288
- package/tests/e2e/helpers/mobileSearch.js +0 -85
- package/tests/jest/plugins/plugin.mobile_nav.test.js +0 -66
|
@@ -36,21 +36,3 @@ ia-bookreader{
|
|
|
36
36
|
overflow: hidden;
|
|
37
37
|
margin: 0 auto;
|
|
38
38
|
}
|
|
39
|
-
|
|
40
|
-
@media only screen and (max-width: 799px) {
|
|
41
|
-
body.BRbodyMobileNavEnabled {
|
|
42
|
-
margin: 0;
|
|
43
|
-
width: 100%;
|
|
44
|
-
overflow: hidden;
|
|
45
|
-
}
|
|
46
|
-
.BRbodyMobileNavEnabled .BookReader {
|
|
47
|
-
top: 0;
|
|
48
|
-
bottom: 0;
|
|
49
|
-
left: 0;
|
|
50
|
-
right: 0;
|
|
51
|
-
position: absolute;
|
|
52
|
-
height: 100%;
|
|
53
|
-
margin: 0;
|
|
54
|
-
width: 100%;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
@@ -92,9 +92,6 @@ var options = {
|
|
|
92
92
|
{label: 'Author', value: 'Internet Archive'},
|
|
93
93
|
{label: 'Demo Info', value: 'This demo shows how one could use BookReader with their own content.'},
|
|
94
94
|
],
|
|
95
|
-
// This toggles the mobile drawer (not shown in 'embed' mode)
|
|
96
|
-
enableMobileNav: false,
|
|
97
|
-
mobileNavTitle: 'BookReader demo',
|
|
98
95
|
|
|
99
96
|
// Override the path used to find UI images
|
|
100
97
|
imagesBaseURL: '../BookReader/images/',
|
|
@@ -15,8 +15,6 @@
|
|
|
15
15
|
<link rel="stylesheet" href="../BookReader/BookReader.css"/>
|
|
16
16
|
<script src="../BookReader/BookReader.js"></script>
|
|
17
17
|
|
|
18
|
-
<!-- Mobile nav plugin -->
|
|
19
|
-
<script src="../BookReader/plugins/plugin.mobile_nav.js"></script>
|
|
20
18
|
<!-- Autoplay plugin -->
|
|
21
19
|
<script src="../BookReader/plugins/plugin.autoplay.js"></script>
|
|
22
20
|
|
|
@@ -15,9 +15,6 @@
|
|
|
15
15
|
<link rel="stylesheet" href="../BookReader/BookReader.css"/>
|
|
16
16
|
<script src="../BookReader/BookReader.js"></script>
|
|
17
17
|
|
|
18
|
-
<!-- Mobile nav plugin -->
|
|
19
|
-
<script src="../BookReader/plugins/plugin.mobile_nav.js"></script>
|
|
20
|
-
|
|
21
18
|
<!-- URL-changing plugin -->
|
|
22
19
|
<script src="../BookReader/plugins/plugin.url.js"></script>
|
|
23
20
|
|
|
@@ -31,7 +28,7 @@ html, body { width: 100%; height: 100%; margin: 0; padding: 0; background: grey;
|
|
|
31
28
|
<div id="BookReader"></div>
|
|
32
29
|
<script type="text/javascript" src="BookReaderJSSimple.js"></script>
|
|
33
30
|
<script>
|
|
34
|
-
instantiateBookReader('#BookReader'
|
|
31
|
+
instantiateBookReader('#BookReader');
|
|
35
32
|
</script>
|
|
36
33
|
</body>
|
|
37
34
|
</html>
|
|
@@ -15,9 +15,6 @@
|
|
|
15
15
|
<link rel="stylesheet" href="../BookReader/BookReader.css"/>
|
|
16
16
|
<script src="../BookReader/BookReader.js"></script>
|
|
17
17
|
|
|
18
|
-
<!-- Mobile nav plugin -->
|
|
19
|
-
<script src="../BookReader/plugins/plugin.mobile_nav.js"></script>
|
|
20
|
-
|
|
21
18
|
<!-- URL-changing plugin -->
|
|
22
19
|
<script src="../BookReader/plugins/plugin.url.js"></script>
|
|
23
20
|
|
|
@@ -15,9 +15,6 @@
|
|
|
15
15
|
<link rel="stylesheet" href="../BookReader/BookReader.css"/>
|
|
16
16
|
<script src="../BookReader/BookReader.js"></script>
|
|
17
17
|
|
|
18
|
-
<!-- Mobile nav plugin -->
|
|
19
|
-
<script src="../BookReader/plugins/plugin.mobile_nav.js"></script>
|
|
20
|
-
|
|
21
18
|
<!-- URL-changing plugin -->
|
|
22
19
|
<script src="../BookReader/plugins/plugin.url.js"></script>
|
|
23
20
|
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
<link rel="stylesheet" href="../BookReader/BookReader.css"/>
|
|
15
15
|
|
|
16
16
|
<!-- plugins needed for archive.org, in same order as archive.org -->
|
|
17
|
-
<script src="../BookReader/plugins/plugin.mobile_nav.js"></script>
|
|
18
17
|
<script src="../BookReader/plugins/plugin.search.js"></script>
|
|
19
18
|
<script src="../BookReader/plugins/plugin.chapters.js"></script>
|
|
20
19
|
<script src="../BookReader/plugins/plugin.tts.js"></script>
|
|
@@ -15,9 +15,6 @@
|
|
|
15
15
|
<link rel="stylesheet" href="../BookReader/BookReader.css"/>
|
|
16
16
|
<script src="../BookReader/BookReader.js"></script>
|
|
17
17
|
|
|
18
|
-
<!-- Mobile nav plugin -->
|
|
19
|
-
<script src="../BookReader/plugins/plugin.mobile_nav.js"></script>
|
|
20
|
-
|
|
21
18
|
<!-- URL-changing plugin -->
|
|
22
19
|
<script src="../BookReader/plugins/plugin.url.js"></script>
|
|
23
20
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
# 5.0.0-68
|
|
2
|
+
- Fix: 1up zoom wrong on start/entering full screen @cdrini
|
|
3
|
+
- Dev: BREAKING: delete `plugin.mobile_nav.js` no longer used @cdrini
|
|
4
|
+
- Dev: Move page 1 label correction logic to BookReaderJSIA @cdrini
|
|
5
|
+
|
|
1
6
|
# 5.0.0-67
|
|
2
7
|
- Feature: Re-enable chapters plugin + migrate off mmenu @cdrini
|
|
3
8
|
- Fix: Disable tooltips on touchscreens + fix on IA @cdrini
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@internetarchive/bookreader",
|
|
3
|
-
"version": "5.0.0-
|
|
3
|
+
"version": "5.0.0-68",
|
|
4
4
|
"description": "The Internet Archive BookReader.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"private": false,
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@internetarchive/ia-activity-indicator": "^0.0.4",
|
|
29
|
-
"@internetarchive/ia-item-navigator": "^1.
|
|
29
|
+
"@internetarchive/ia-item-navigator": "^1.1.1",
|
|
30
30
|
"@internetarchive/ia-sharing-options": "^1.0.2",
|
|
31
31
|
"@internetarchive/icon-bookmark": "^1.3.4",
|
|
32
32
|
"@internetarchive/icon-dl": "^1.3.4",
|
|
@@ -48,11 +48,11 @@
|
|
|
48
48
|
"@babel/plugin-proposal-decorators": "7.22.7",
|
|
49
49
|
"@babel/preset-env": "7.22.9",
|
|
50
50
|
"@open-wc/testing-helpers": "^2.3.0",
|
|
51
|
-
"@types/jest": "29.5.
|
|
51
|
+
"@types/jest": "29.5.4",
|
|
52
52
|
"@webcomponents/webcomponentsjs": "^2.6.0",
|
|
53
53
|
"babel-loader": "9.1.3",
|
|
54
54
|
"codecov": "^3.8.3",
|
|
55
|
-
"concurrently": "7.
|
|
55
|
+
"concurrently": "7.6.0",
|
|
56
56
|
"core-js": "3.27.1",
|
|
57
57
|
"cpx2": "4.2.3",
|
|
58
58
|
"eslint": "^7.32.0",
|
|
@@ -61,16 +61,15 @@
|
|
|
61
61
|
"http-server": "14.1.1",
|
|
62
62
|
"interactjs": "^1.10.18",
|
|
63
63
|
"iso-language-codes": "1.1.0",
|
|
64
|
-
"jest": "29.6.
|
|
65
|
-
"jest-environment-jsdom": "^29.4
|
|
64
|
+
"jest": "29.6.4",
|
|
65
|
+
"jest-environment-jsdom": "^29.6.4",
|
|
66
66
|
"jquery": "3.6.1",
|
|
67
67
|
"jquery-colorbox": "1.6.4",
|
|
68
68
|
"jquery-ui": "1.12.1",
|
|
69
69
|
"jquery-ui-touch-punch": "0.2.3",
|
|
70
70
|
"jquery.browser": "0.1.0",
|
|
71
|
-
"jquery.mmenu": "5.6.5",
|
|
72
71
|
"live-server": "1.2.2",
|
|
73
|
-
"node-fetch": "3.2
|
|
72
|
+
"node-fetch": "3.3.2",
|
|
74
73
|
"regenerator-runtime": "0.13.11",
|
|
75
74
|
"sass": "1.64.2",
|
|
76
75
|
"sinon": "^15.1.0",
|
|
@@ -30,18 +30,6 @@ export class BookModel {
|
|
|
30
30
|
this._medianPageSize = null;
|
|
31
31
|
/** @type {[PageData[], number]} */
|
|
32
32
|
this._getDataFlattenedCached = null;
|
|
33
|
-
|
|
34
|
-
// Heal missing first page number assertion
|
|
35
|
-
const pages = this._getDataFlattened();
|
|
36
|
-
const firstNumberedPageIndex = pages.findIndex(page => page.pageNum != undefined && !isNaN(parseFloat(page.pageNum)));
|
|
37
|
-
if (firstNumberedPageIndex != -1 && firstNumberedPageIndex > 0) {
|
|
38
|
-
const pageNum = parseFloat(pages[firstNumberedPageIndex].pageNum);
|
|
39
|
-
if (!isNaN(pageNum)) {
|
|
40
|
-
// Note: Since the pages are always sorted in increasing pageNum/index
|
|
41
|
-
// order, this will work for both left-to-right and right-to-left books
|
|
42
|
-
pages[firstNumberedPageIndex - 1].pageNum = pageNum - 1;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
33
|
}
|
|
46
34
|
|
|
47
35
|
/** Get median width/height of page in inches. Memoized for performance. */
|
|
@@ -77,7 +77,7 @@ export class Mode1Up {
|
|
|
77
77
|
jumpToIndex(index, pageX, pageY, noAnimate) {
|
|
78
78
|
// Only smooth for small distances
|
|
79
79
|
const distance = Math.abs(this.br.currentIndex() - index);
|
|
80
|
-
const smooth = !noAnimate && distance <= 4;
|
|
80
|
+
const smooth = !noAnimate && distance > 0 && distance <= 4;
|
|
81
81
|
this.mode1UpLit.jumpToIndex(index, { smooth });
|
|
82
82
|
}
|
|
83
83
|
|
|
@@ -350,7 +350,7 @@ export class Mode1UpLit extends LitElement {
|
|
|
350
350
|
*/
|
|
351
351
|
computeDefaultScale(page) {
|
|
352
352
|
// Default to real size if it fits, otherwise default to full width
|
|
353
|
-
const containerWidthIn = this.coordSpace.
|
|
353
|
+
const containerWidthIn = this.coordSpace.renderedPixelsToWorldUnits(this.clientWidth);
|
|
354
354
|
return Math.min(1, containerWidthIn / (page.widthInches + 2 * this.SPACING_IN)) || 1;
|
|
355
355
|
}
|
|
356
356
|
|
package/src/BookReader/events.js
CHANGED
package/src/BookReader.js
CHANGED
|
@@ -1355,9 +1355,8 @@ exposeOverrideableMethod(Toolbar, '_components.toolbar', 'getToolBarHeight');
|
|
|
1355
1355
|
*/
|
|
1356
1356
|
BookReader.prototype.bindNavigationHandlers = function() {
|
|
1357
1357
|
const self = this;
|
|
1358
|
+
const jIcons = this.$('.BRicon');
|
|
1358
1359
|
|
|
1359
|
-
// Note the mobile plugin attaches itself to body, so we need to select outside
|
|
1360
|
-
const jIcons = this.$('.BRicon').add('.BRmobileMenu .BRicon');
|
|
1361
1360
|
// Map of jIcon class -> click handler
|
|
1362
1361
|
const navigationControls = {
|
|
1363
1362
|
book_left: () => {
|
package/src/css/BookReader.scss
CHANGED
|
@@ -7,7 +7,6 @@ $brFontFamily: "Helvetica Neue", Arial, Verdana, sans-serif;
|
|
|
7
7
|
$brColorThemeblue: #0074D1;
|
|
8
8
|
$brColorThemeBlue2: #4990E2;
|
|
9
9
|
$brColorThemeBlue3: rgb(74,144,226);
|
|
10
|
-
$brColorThemeBlueDarker: rgb(36,94,131);
|
|
11
10
|
$brColorDarkGreyBg: #333;
|
|
12
11
|
$brColorMainBg: black;
|
|
13
12
|
|
|
@@ -44,13 +43,11 @@ $mediumBlue: #428bca;
|
|
|
44
43
|
$lightBlue: #adaedc;
|
|
45
44
|
$controlsText: $white;
|
|
46
45
|
$controlsBG: $gray20;
|
|
47
|
-
$iconStroke: $white;
|
|
48
46
|
$tooltipBG: $gray20;
|
|
49
47
|
$activeButtonBG: $white;
|
|
50
48
|
$controlsBorder: $gray13;
|
|
51
49
|
$trackColor: $gray40;
|
|
52
50
|
$trackFillColor: $gray80;
|
|
53
|
-
$mobileMenuBG: #151515;
|
|
54
51
|
|
|
55
52
|
$tooltipBG: $gray20;
|
|
56
53
|
$tooltipText: $white;
|
|
@@ -70,7 +67,7 @@ $searchResultBG: $darkBlue;
|
|
|
70
67
|
}
|
|
71
68
|
|
|
72
69
|
// These are the main root elements in BookReader
|
|
73
|
-
$brScope: ".BookReader, .
|
|
70
|
+
$brScope: ".BookReader, .BRfloat";
|
|
74
71
|
|
|
75
72
|
@import 'colorbox';
|
|
76
73
|
@import 'BRmain';
|
|
@@ -80,7 +77,6 @@ $brScope: ".BookReader, .BRmobileMenu, .BRfloat";
|
|
|
80
77
|
@import 'BRnav';
|
|
81
78
|
@import 'BRtoolbar';
|
|
82
79
|
@import 'BRsearch';
|
|
83
|
-
@import 'MobileNav';
|
|
84
80
|
@import 'BRvendor';
|
|
85
81
|
@import 'icons';
|
|
86
82
|
@import 'controls';
|
package/src/css/_BRnav.scss
CHANGED
|
@@ -130,14 +130,6 @@
|
|
|
130
130
|
// Default
|
|
131
131
|
@include brNavDark;
|
|
132
132
|
|
|
133
|
-
/* Full mobile styles */
|
|
134
|
-
@media (max-width: $brBreakPointMobile) {
|
|
135
|
-
.BRbodyMobileNavEnabled &,
|
|
136
|
-
.BRbodyMobileNavEnabledFullscreen.BRfullscreenActive & {
|
|
137
|
-
@include brNavLight;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
133
|
&--controls {
|
|
142
134
|
display: flex;
|
|
143
135
|
}
|
|
@@ -41,8 +41,7 @@ BookReader.prototype.bindNavigationHandlers = (function(super_) {
|
|
|
41
41
|
|
|
42
42
|
if (!this.options.enableAutoPlayPlugin) return;
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
const jIcons = this.$('.BRicon').add('.BRmobileMenu .BRicon');
|
|
44
|
+
const jIcons = this.$('.BRicon');
|
|
46
45
|
|
|
47
46
|
jIcons.filter('.play').click(() => {
|
|
48
47
|
this.autoToggle();
|
|
@@ -2,9 +2,6 @@
|
|
|
2
2
|
/* global BookReader */
|
|
3
3
|
/**
|
|
4
4
|
* Plugin for Archive.org book search
|
|
5
|
-
* NOTE: This script must be loaded AFTER `plugin.mobile_nav.js`
|
|
6
|
-
* as it mutates mobile nav drawer
|
|
7
|
-
*
|
|
8
5
|
* Events fired at various points throughout search processing are published
|
|
9
6
|
* on the document DOM element. These can be subscribed to using jQuery's event
|
|
10
7
|
* binding method `$.fn.on`. All of the events are prefixed with a BookReader
|
package/tests/e2e/base.test.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { runBaseTests } from './helpers/base';
|
|
2
2
|
import BookReader from './models/BookReader';
|
|
3
|
-
import {
|
|
4
|
-
// import { runMobileSearchTests } from './helpers/mobileSearch';
|
|
3
|
+
import { runSearchTests } from './helpers/search';
|
|
5
4
|
import params from './helpers/params';
|
|
6
5
|
|
|
7
6
|
const ocaids = params.ocaids || [
|
|
@@ -22,14 +21,7 @@ ocaids.forEach(ocaid => {
|
|
|
22
21
|
runBaseTests(new BookReader());
|
|
23
22
|
|
|
24
23
|
|
|
25
|
-
fixture `
|
|
24
|
+
fixture `Search Tests for: ${ocaid}`
|
|
26
25
|
.page `${url}`;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
// Todo: deprecated, will remove once mmenu is removed.
|
|
30
|
-
// fixture `Mobile Search Tests for: ${ocaid}`
|
|
31
|
-
// .page `${url}`
|
|
32
|
-
// runMobileSearchTests(new BookReader());
|
|
33
|
-
|
|
34
|
-
|
|
26
|
+
runSearchTests(new BookReader());
|
|
35
27
|
});
|
|
@@ -53,14 +53,14 @@ export function runBaseTests (br) {
|
|
|
53
53
|
test('nav menu displays properly', async t => {
|
|
54
54
|
const { nav } = br;
|
|
55
55
|
|
|
56
|
-
await t.expect(nav.
|
|
57
|
-
await t.expect(nav.
|
|
58
|
-
await t.expect(nav.
|
|
59
|
-
await t.expect(nav.
|
|
60
|
-
await t.expect(nav.
|
|
61
|
-
await t.expect(nav.
|
|
62
|
-
await t.expect(nav.
|
|
63
|
-
await t.expect(nav.
|
|
56
|
+
await t.expect(nav.goLeft.visible).ok();
|
|
57
|
+
await t.expect(nav.goRight.visible).ok();
|
|
58
|
+
await t.expect(nav.mode1Up.visible).ok();
|
|
59
|
+
await t.expect(nav.mode2Up.visible).ok();
|
|
60
|
+
await t.expect(nav.modeThumb.visible).ok();
|
|
61
|
+
await t.expect(nav.zoomIn.visible).ok();
|
|
62
|
+
await t.expect(nav.zoomOut.visible).ok();
|
|
63
|
+
await t.expect(nav.fullScreen.visible).ok();
|
|
64
64
|
});
|
|
65
65
|
|
|
66
66
|
test("Canonical URL has no initial parameters", async t => {
|
|
@@ -87,7 +87,7 @@ export function runBaseTests (br) {
|
|
|
87
87
|
const initialUrl = await getUrl();
|
|
88
88
|
|
|
89
89
|
// Set Cookie by page navigation, wait for cookie
|
|
90
|
-
await t.click(nav.
|
|
90
|
+
await t.click(nav.goNext);
|
|
91
91
|
await t.wait(PAGE_FLIP_WAIT_TIME);
|
|
92
92
|
|
|
93
93
|
// reload canonical URL, wait for URL change
|
|
@@ -109,9 +109,9 @@ export function runBaseTests (br) {
|
|
|
109
109
|
const { nav, BRcontainer} = br;
|
|
110
110
|
|
|
111
111
|
// Go to next page, so we can go previous if at front cover
|
|
112
|
-
await t.click(nav.
|
|
112
|
+
await t.click(nav.goNext);
|
|
113
113
|
await t.wait(PAGE_FLIP_WAIT_TIME);
|
|
114
|
-
await t.click(nav.
|
|
114
|
+
await t.click(nav.goNext);
|
|
115
115
|
await t.wait(PAGE_FLIP_WAIT_TIME);
|
|
116
116
|
|
|
117
117
|
const onLoadBrState = BRcontainer.child(0);
|
|
@@ -119,7 +119,7 @@ export function runBaseTests (br) {
|
|
|
119
119
|
const origImg1Src = await initialImages.nth(0).getAttribute('src');
|
|
120
120
|
const origImg2Src = await initialImages.nth(-1).getAttribute('src');
|
|
121
121
|
|
|
122
|
-
await t.click(nav.
|
|
122
|
+
await t.click(nav.goPrev);
|
|
123
123
|
await t.wait(PAGE_FLIP_WAIT_TIME);
|
|
124
124
|
|
|
125
125
|
const nextBrState = Selector('.BRcontainer').child(0);
|
|
@@ -144,7 +144,7 @@ export function runBaseTests (br) {
|
|
|
144
144
|
// Note: this will fail on a R to L book if at front cover
|
|
145
145
|
const { nav, BRcontainer} = br;
|
|
146
146
|
// Flip away from cover
|
|
147
|
-
await t.click(nav.
|
|
147
|
+
await t.click(nav.goNext);
|
|
148
148
|
await t.wait(PAGE_FLIP_WAIT_TIME);
|
|
149
149
|
|
|
150
150
|
const onLoadBrState = BRcontainer.child(0);
|
|
@@ -152,7 +152,7 @@ export function runBaseTests (br) {
|
|
|
152
152
|
const origImg1Src = await initialImages.nth(0).getAttribute('src');
|
|
153
153
|
const origImg2Src = await initialImages.nth(-1).getAttribute('src');
|
|
154
154
|
|
|
155
|
-
await t.click(nav.
|
|
155
|
+
await t.click(nav.goNext);
|
|
156
156
|
await t.wait(PAGE_FLIP_WAIT_TIME);
|
|
157
157
|
|
|
158
158
|
const nextBrState = Selector('.BRcontainer').child(0);
|
|
@@ -173,28 +173,28 @@ export function runBaseTests (br) {
|
|
|
173
173
|
test('Clicking `page flip buttons` updates location', async t => {
|
|
174
174
|
const { nav } = br;
|
|
175
175
|
// Page navigation creates params
|
|
176
|
-
await t.click(nav.
|
|
176
|
+
await t.click(nav.goNext);
|
|
177
177
|
await t.expect(isPageInUrl()).eql(true);
|
|
178
178
|
await t.expect(isModeInUrl('2up')).eql(true);
|
|
179
179
|
|
|
180
|
-
await t.click(nav.
|
|
180
|
+
await t.click(nav.goPrev);
|
|
181
181
|
await t.expect(isPageInUrl()).eql(true);
|
|
182
182
|
await t.expect(isModeInUrl('2up')).eql(true);
|
|
183
183
|
});
|
|
184
184
|
|
|
185
185
|
test('Clicking `2 page view` brings up cur page + caching', async t => {
|
|
186
186
|
const { nav } = br;
|
|
187
|
-
await t.click(nav.
|
|
187
|
+
await t.click(nav.mode2Up);
|
|
188
188
|
await t.expect(Selector('.BRpagecontainer.BRpage-visible').count).eql(1);
|
|
189
189
|
await t.expect(Selector('.BRpagecontainer').count).eql(3);
|
|
190
190
|
});
|
|
191
191
|
|
|
192
192
|
test('Clicking `1 page view` brings up 1 at a time', async t => {
|
|
193
193
|
const { nav } = br;
|
|
194
|
-
await t.click(nav.
|
|
194
|
+
await t.click(nav.mode1Up);
|
|
195
195
|
|
|
196
196
|
// Flip away from cover
|
|
197
|
-
await t.click(nav.
|
|
197
|
+
await t.click(nav.goNext);
|
|
198
198
|
await t.wait(PAGE_FLIP_WAIT_TIME);
|
|
199
199
|
|
|
200
200
|
// we usually pre-fetch the page in question & the 2 after it
|
|
@@ -203,7 +203,7 @@ export function runBaseTests (br) {
|
|
|
203
203
|
|
|
204
204
|
test('Clicking `thumbnail view` brings up all of the page thumbnails', async t => {
|
|
205
205
|
const { nav } = br;
|
|
206
|
-
await t.click(nav.
|
|
206
|
+
await t.click(nav.modeThumb);
|
|
207
207
|
await t.expect(Selector('.BRpagecontainer').count).gte(3);
|
|
208
208
|
});
|
|
209
209
|
|
|
@@ -213,12 +213,12 @@ export function runBaseTests (br) {
|
|
|
213
213
|
|
|
214
214
|
await t.expect(br.BRcontainer.visible).ok();
|
|
215
215
|
await t.expect(page.visible).ok();
|
|
216
|
-
await t.expect(nav.
|
|
216
|
+
await t.expect(nav.zoomOut.visible).ok();
|
|
217
217
|
|
|
218
218
|
const initialBookHeight = await page.getBoundingClientRectProperty('height');
|
|
219
219
|
const initialBookWidth = await page.getBoundingClientRectProperty('width');
|
|
220
220
|
|
|
221
|
-
await t.click(nav.
|
|
221
|
+
await t.click(nav.zoomOut);
|
|
222
222
|
|
|
223
223
|
const zoomOutBookHeight = await page.getBoundingClientRectProperty('height');
|
|
224
224
|
const zoomOutBookWidth = await page.getBoundingClientRectProperty('width');
|
|
@@ -233,12 +233,12 @@ export function runBaseTests (br) {
|
|
|
233
233
|
|
|
234
234
|
await t.expect(br.BRcontainer.visible).ok();
|
|
235
235
|
await t.expect(page.visible).ok();
|
|
236
|
-
await t.expect(nav.
|
|
236
|
+
await t.expect(nav.zoomIn.visible).ok();
|
|
237
237
|
|
|
238
238
|
const initialBookHeight = await page.getBoundingClientRectProperty('height');
|
|
239
239
|
const initialBookWidth = await page.getBoundingClientRectProperty('width');
|
|
240
240
|
|
|
241
|
-
await t.click(nav.
|
|
241
|
+
await t.click(nav.zoomIn);
|
|
242
242
|
|
|
243
243
|
const zoomInBookHeight = await page.getBoundingClientRectProperty('height');
|
|
244
244
|
const zoomIntBookWidth = await page.getBoundingClientRectProperty('width');
|
|
@@ -253,10 +253,10 @@ export function runBaseTests (br) {
|
|
|
253
253
|
|
|
254
254
|
// initial in-page
|
|
255
255
|
await t.expect(BRcontainer.getBoundingClientRectProperty('width')).lte(windowWidth);
|
|
256
|
-
await t.click(nav.
|
|
256
|
+
await t.click(nav.fullScreen);
|
|
257
257
|
// full screen
|
|
258
258
|
await t.expect(BRcontainer.getBoundingClientRectProperty('width')).eql(windowWidth);
|
|
259
|
-
await t.click(nav.
|
|
259
|
+
await t.click(nav.fullScreen);
|
|
260
260
|
// in-page
|
|
261
261
|
await t.expect(BRcontainer.getBoundingClientRectProperty('width')).lte(windowWidth);
|
|
262
262
|
});
|
|
@@ -4,20 +4,20 @@ const getPageUrl = ClientFunction(() => window.location.href);
|
|
|
4
4
|
export function runRightToLeftTests (br) {
|
|
5
5
|
test('Right to Left - correct initialization in two-page view', async t => {
|
|
6
6
|
const { nav, BRcontainer} = br;
|
|
7
|
-
await t.click(nav.
|
|
7
|
+
await t.click(nav.mode2Up);
|
|
8
8
|
|
|
9
9
|
//checking right leaf edge is not in tree
|
|
10
10
|
await t.expect(BRcontainer.find('.br-mode-2up__leafs--left').count).eql(1);
|
|
11
11
|
await t.expect(BRcontainer.find('.br-mode-2up__leafs--right').count).eql(0);
|
|
12
12
|
|
|
13
13
|
//checks slider is in correct position
|
|
14
|
-
await t.expect(nav.
|
|
14
|
+
await t.expect(nav.sliderRange.getStyleProperty('width')).eql('0px');
|
|
15
15
|
});
|
|
16
16
|
|
|
17
17
|
test('Right to Left - assuring flipping left goes to next page', async t => {
|
|
18
18
|
const { nav } = br;
|
|
19
|
-
await t.click(nav.
|
|
20
|
-
await t.click(nav.
|
|
19
|
+
await t.click(nav.mode2Up);
|
|
20
|
+
await t.click(nav.goLeft);
|
|
21
21
|
await t.expect(getPageUrl()).match(/page\/n1/);
|
|
22
22
|
});
|
|
23
23
|
}
|
|
@@ -3,7 +3,7 @@ import { SEARCH_INSIDE_URL_RE , mockResponseFound, mockResponseNotFound,
|
|
|
3
3
|
TEST_TEXT_FOUND, TEST_TEXT_NOT_FOUND, PAGE_FIRST_RESULT, SEARCH_MATCHES_LENGTH } from './mockSearch';
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
export function
|
|
6
|
+
export function runSearchTests(br) {
|
|
7
7
|
//building mock response for successful and unsuccessful search
|
|
8
8
|
const mockFound = RequestMock()
|
|
9
9
|
.onRequestTo(SEARCH_INSIDE_URL_RE )
|
|
@@ -15,32 +15,32 @@ export function runDesktopSearchTests(br) {
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
test
|
|
18
|
-
.requestHooks(mockFound)('
|
|
18
|
+
.requestHooks(mockFound)('Search - successful search', async t => {
|
|
19
19
|
const nav = br.nav;
|
|
20
20
|
|
|
21
21
|
//assuring that the search bar is enabled
|
|
22
|
-
await t.expect(nav.
|
|
23
|
-
await t.click(nav.
|
|
22
|
+
await t.expect(nav.searchIcon.visible).ok();
|
|
23
|
+
await t.click(nav.searchIcon);
|
|
24
24
|
|
|
25
25
|
//testing search for a word found in the book
|
|
26
|
-
await t.selectText(nav.
|
|
26
|
+
await t.selectText(nav.searchBox).pressKey('delete');
|
|
27
27
|
// FIXME: Why is it only typing every other letter?!?!
|
|
28
|
-
await t.typeText(nav.
|
|
28
|
+
await t.typeText(nav.searchBox, TEST_TEXT_FOUND.split('').join('_'));
|
|
29
29
|
await t.pressKey('enter');
|
|
30
30
|
|
|
31
|
-
await t.expect(nav.
|
|
32
|
-
await t.expect(nav.
|
|
33
|
-
await t.expect(nav.
|
|
34
|
-
await t.expect(nav.
|
|
35
|
-
await t.expect(nav.
|
|
36
|
-
await t.expect(nav.
|
|
31
|
+
await t.expect(nav.searchPin.exists).ok();
|
|
32
|
+
await t.expect(nav.searchPin.child('.BRquery').child('main').exists).ok();
|
|
33
|
+
await t.expect(nav.searchPin.child('.BRquery').child('main').innerText).contains(TEST_TEXT_FOUND);
|
|
34
|
+
await t.expect(nav.searchNavigation.exists).ok();
|
|
35
|
+
await t.expect(nav.searchNavigation.find('[data-id="resultsCount"]').exists).ok();
|
|
36
|
+
await t.expect(nav.searchNavigation.find('[data-id="resultsCount"]').innerText).contains(SEARCH_MATCHES_LENGTH);
|
|
37
37
|
|
|
38
38
|
//checking url
|
|
39
39
|
const getPageUrl = ClientFunction(() => window.location.href.toString());
|
|
40
40
|
await t.expect(getPageUrl()).contains(TEST_TEXT_FOUND);
|
|
41
41
|
|
|
42
42
|
//checks clicking on first search pin opens correct page
|
|
43
|
-
await t.click(nav.
|
|
43
|
+
await t.click(nav.searchPin);
|
|
44
44
|
await t.expect(getPageUrl()).contains(PAGE_FIRST_RESULT);
|
|
45
45
|
|
|
46
46
|
//checks highlight on result page is visible
|
|
@@ -51,19 +51,19 @@ export function runDesktopSearchTests(br) {
|
|
|
51
51
|
|
|
52
52
|
|
|
53
53
|
test
|
|
54
|
-
.requestHooks(mockNotFound)('
|
|
54
|
+
.requestHooks(mockNotFound)('Search - unsuccessful search', async t => {
|
|
55
55
|
const nav = br.nav;
|
|
56
56
|
|
|
57
57
|
//assuring that the search bar is enabled
|
|
58
|
-
await t.expect(nav.
|
|
59
|
-
await t.click(nav.
|
|
58
|
+
await t.expect(nav.searchIcon.visible).ok();
|
|
59
|
+
await t.click(nav.searchIcon);
|
|
60
60
|
|
|
61
61
|
//testing search for a word not found in the book
|
|
62
|
-
await t.selectText(nav.
|
|
62
|
+
await t.selectText(nav.searchBox).pressKey('delete');
|
|
63
63
|
// FIXME: Why is it only typing every other letter?!?!
|
|
64
|
-
await t.typeText(nav.
|
|
64
|
+
await t.typeText(nav.searchBox, TEST_TEXT_NOT_FOUND.split('').join('_'));
|
|
65
65
|
await t.pressKey('enter');
|
|
66
|
-
await t.expect(nav.
|
|
66
|
+
await t.expect(nav.searchPin.child('.BRquery').child('main').withText(TEST_TEXT_NOT_FOUND).exists).notOk();
|
|
67
67
|
|
|
68
68
|
const getPageUrl = ClientFunction(() => window.location.href.toString());
|
|
69
69
|
await t.expect(getPageUrl()).contains(TEST_TEXT_NOT_FOUND);
|