Hello,
Marisa (or else :) ), could you please help me figure-out the best spot to insert a few additional tests? I guess somewhere within 0120 or 0220?
https://github.com/mgylling/epub-testsuite/tree/master/content/30/epub30-test-0120/EPUB
https://github.com/mgylling/epub-testsuite/tree/master/content/30/epub30-test-0220/EPUB
Are any of the following tests already implemented?
---- 1) media:active-class, playback highlight
1.1) injection of author-supplied CSS classname on read-aloud HTML element [required]
1.2) injection of RS-supplied CSS classname (or alternatively: inline CSS style properties) on read-aloud HTML element [optional]
---- 2) EPUB 3.0.1 media:playback-active-class, talking book status (playing versus paused/stopped)
2.1) injection of author-supplied CSS classname on 'html' document root [required]
2.2) injection of RS-supplied CSS classname (or alternatively: inline CSS style properties) on 'html' document root [optional]
---- 3) Skippability
(e.g. XHTML <span epub:type="pagebreak" title="page break 1" /> <===> SMIL <par epub:type="pagebreak">...</par>)
3.1) linear, uninterrupted playback flow (no user interaction, forward progression)
3.2) user-driven phrase-level navigation
3.2.1) "next" (forward progression)
3.2.2) "previous" (backward progression)
3.2.2) quick succession of "previous" commands when audio clip is short (e.g. word-level synchronisation) => expectation: RS should let the playback cursor go backwards, despite audio position callback interfering with user input.
3.3) forward progression when skippable element is last in SMIL => shift playback to first element of next MO-enabled spine item
3.4) backward progression when skippable element is first in SMIL => shift playback to last element of previous MO-enabled spine item
3.5) skipping of several contiguous skippable elements
3.5.1) forward (+ edge case of "last item" SMIL boundary)
3.5.2) backward (+ edge case of "first item" SMIL boundary)
---- 4) Escapability
(e.g. XHTML <div epub:type="glossary"> ... </div> <===> SMIL <seq epub:type="glossary">...</seq>)
User invokes "escape" command:
4.1) no escapable ancestor for active element => shift playback to next SMIL item
4.2) first ancestor is escaped, then playback continues linearly "after" the escapable scope
4.2) nested scopes: first ancestor is escaped => playback resumes within the second larger scope, ... then second escapable ancestor is escaped (higher up the tree hierarchy) => playback continues linearly "after" the topmost escapable scope (e.g. HTML table, cell rows)
4.3) nothing to play in the current SMIL after the escaped fragment => shift playback to next MO-enabled spine item, if any.
That's it for now. Comments welcome.
Dan