@internetarchive/bookreader 5.0.0-66 → 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.
Files changed (55) hide show
  1. package/BookReader/BookReader.css +68 -918
  2. package/BookReader/BookReader.js +1 -1
  3. package/BookReader/BookReader.js.map +1 -1
  4. package/BookReader/ia-bookreader-bundle.js +118 -128
  5. package/BookReader/ia-bookreader-bundle.js.map +1 -1
  6. package/BookReader/plugins/plugin.autoplay.js +1 -1
  7. package/BookReader/plugins/plugin.autoplay.js.map +1 -1
  8. package/BookReader/plugins/plugin.chapters.js +24 -1
  9. package/BookReader/plugins/plugin.chapters.js.map +1 -1
  10. package/BookReader/plugins/plugin.search.js.map +1 -1
  11. package/BookReader/plugins/plugin.tts.js +1 -1
  12. package/BookReader/plugins/plugin.tts.js.map +1 -1
  13. package/BookReaderDemo/BookReaderDemo.css +0 -18
  14. package/BookReaderDemo/BookReaderJSAdvanced.js +0 -3
  15. package/BookReaderDemo/demo-autoplay.html +0 -2
  16. package/BookReaderDemo/demo-fullscreen-mobile.html +1 -4
  17. package/BookReaderDemo/demo-fullscreen.html +0 -3
  18. package/BookReaderDemo/demo-iiif.js +0 -1
  19. package/BookReaderDemo/demo-internetarchive.html +41 -3
  20. package/BookReaderDemo/demo-vendor-fullscreen.html +0 -3
  21. package/BookReaderDemo/immersion-1up.html +0 -1
  22. package/BookReaderDemo/immersion-mode.html +0 -3
  23. package/BookReaderDemo/toggle_controls.html +1 -1
  24. package/CHANGELOG.md +10 -0
  25. package/index.html +1 -1
  26. package/package.json +9 -9
  27. package/src/BookNavigator/book-navigator.js +4 -3
  28. package/src/BookReader/Mode1Up.js +1 -1
  29. package/src/BookReader/Mode1UpLit.js +1 -1
  30. package/src/BookReader/Navbar/Navbar.js +2 -2
  31. package/src/BookReader/events.js +0 -1
  32. package/src/BookReader.js +1 -2
  33. package/src/css/BookReader.scss +1 -5
  34. package/src/css/_BRnav.scss +5 -10
  35. package/src/css/_BRsearch.scss +6 -2
  36. package/src/css/_controls.scss +3 -2
  37. package/src/plugins/plugin.autoplay.js +1 -2
  38. package/src/plugins/plugin.chapters.js +201 -169
  39. package/src/plugins/search/plugin.search.js +0 -3
  40. package/src/plugins/tts/plugin.tts.js +1 -1
  41. package/tests/e2e/base.test.js +3 -11
  42. package/tests/e2e/helpers/base.js +26 -26
  43. package/tests/e2e/helpers/rightToLeft.js +4 -4
  44. package/tests/e2e/helpers/{desktopSearch.js → search.js} +19 -19
  45. package/tests/e2e/models/Navigation.js +16 -42
  46. package/tests/e2e/viewmode.test.js +3 -3
  47. package/tests/jest/plugins/plugin.chapters.test.js +92 -76
  48. package/tests/jest/plugins/search/plugin.search.view.test.js +0 -1
  49. package/webpack.config.js +0 -1
  50. package/BookReader/plugins/plugin.mobile_nav.js +0 -2
  51. package/BookReader/plugins/plugin.mobile_nav.js.map +0 -1
  52. package/src/css/_MobileNav.scss +0 -194
  53. package/src/plugins/plugin.mobile_nav.js +0 -288
  54. package/tests/e2e/helpers/mobileSearch.js +0 -85
  55. package/tests/jest/plugins/plugin.mobile_nav.test.js +0 -66
@@ -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(".searchHiliteLayer rect");
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,66 +0,0 @@
1
-
2
- import BookReader from '@/src/BookReader.js';
3
- import '@/src/plugins/plugin.mobile_nav.js';
4
-
5
- /** @type {BookReader} */
6
- let br;
7
- beforeEach(() => {
8
- document.body.innerHTML = '<div id="BookReader">';
9
- br = new BookReader();
10
- br.init();
11
- });
12
-
13
- afterEach(() => {
14
- jest.clearAllMocks();
15
- });
16
-
17
- describe('Plugin: Mobile Nav', () => {
18
- test('has option flag', () => {
19
- expect(BookReader.defaultOptions.enableMobileNav).toEqual(true);
20
- });
21
- test('has added BR property: mobileNavTitle', () => {
22
- expect(br).toHaveProperty('mobileNavTitle');
23
- expect(br.mobileNavTitle).toBeTruthy();
24
- });
25
- test('has added BR property: mobileNavFullscreenOnly', () => {
26
- expect(br).toHaveProperty('mobileNavFullscreenOnly');
27
- expect(br.mobileNavFullscreenOnly).toEqual(false);
28
- });
29
- test('has a referenced copy of nav in BookReader', () => {
30
- expect(br.refs).toHaveProperty('$mmenu');
31
- });
32
- test('draws toolbar on init', () => {
33
- let callCount = 0;
34
- // Since we have a custom setter set in utils/classes.js, we can't
35
- // use regular spying; need to "override" the function with a watcher.
36
- BookReader.prototype.initToolbar = function(_super) {
37
- return function() {
38
- callCount++;
39
- _super.apply(this, arguments);
40
- };
41
- }(BookReader.prototype.initToolbar);
42
- const br = new BookReader();
43
- br.init();
44
- expect(callCount).toBe(1);
45
- });
46
- test('sets a class on body to signal it has attached', () => {
47
- expect($(document.body).hasClass('BRbodyMobileNavEnabled')).toEqual(true);
48
- });
49
- test('loads the navbar on init', () => {
50
- expect($('#BRmobileMenu')).toHaveLength(1);
51
- });
52
- test('There is a Settings Section', () => {
53
- expect($('.BRmobileMenu__settings')).toHaveLength(1);
54
- });
55
- test('There is a More Info Section', () => {
56
- expect($('.BRmobileMenu__moreInfoRow')).toHaveLength(1);
57
- });
58
- test('There is a Sharing Section', () => {
59
- expect($('.BRmobileMenu__share')).toHaveLength(1);
60
- });
61
- test('clicking on hamburger opens menu', () => {
62
- expect($('html').hasClass('mm-opened')).toEqual(false);
63
- $('.BRmobileHamburger').trigger("click");
64
- expect($('html').hasClass('mm-opened')).toEqual(true);
65
- });
66
- });