diff --git a/package.json b/package.json index cdc4f6b..3648964 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vCarousel", - "version": "1.0.0", + "version": "1.0.1", "description": "Video carousel, a new video appears when the previous one finishes playing.", "main": "./src/vCarousel.ts", "scripts": { diff --git a/src/vCarousel.ts b/src/vCarousel.ts index 61b4a2e..3826ee4 100644 --- a/src/vCarousel.ts +++ b/src/vCarousel.ts @@ -117,6 +117,8 @@ export class vCarousel nextHash=vCarousel._vContainers[nextOne].id; nextVContainer.style.display="block"; vCarousel._currentVideo=nextVideo; + // Remise à zéro de la vidéo suivante pour permettre sa lecture : + nextVideo.currentTime=0; // On adapte l'ancre de l'url de manière à ce qu'elle soit cohérente avec la vidéo affichée. // Attention car cela peut provoquer un déplacement dans la page pour atteindre l'ancre. window.location.assign("#"+nextHash); diff --git a/tests/vCarouselSpec.ts b/tests/vCarouselSpec.ts index 3c3b9dc..b9ecbcf 100644 --- a/tests/vCarouselSpec.ts +++ b/tests/vCarouselSpec.ts @@ -149,7 +149,7 @@ describe("vCarousel", () => expect(vCarouselTest.currentVideo).toEqual(currentVideo); expect(window.location.hash).toEqual("#video3"); }); - + it("Si cela est demandé, le carrousel doit reprendre au début après avoir parcouru toutes les vidéos.", () => { vCarouselTest.vContainers=["video1","video2","video3"]; @@ -170,6 +170,29 @@ describe("vCarousel", () => expect(vCarouselTest.currentVideo).toEqual(currentVideo); expect(window.location.hash).toEqual("#video1"); }); + + it("Lorsque l'on passe d'une vidéo à l'autre, la durée de lecture de la suivante doit être remise à zéro pour permettre sa lecture.", () => + { + vCarouselTest.vContainers=["video1","video2","video3"]; + vCarouselTest.noStop=true; + vCarouselTest.run(); + let currentVideo=document.querySelector("#video1 video"); + let nextVideo=document.querySelector("#video2 video"); + nextVideo.currentTime=5; + currentVideo.dispatchEvent(new Event("ended")); + expect(nextVideo.currentTime).toEqual(0); + // Et ainsi de suite : + currentVideo=document.querySelector("#video2 video"); + nextVideo=document.querySelector("#video3 video"); + nextVideo.currentTime=3; + currentVideo.dispatchEvent(new Event("ended")); + expect(nextVideo.currentTime).toEqual(0); + // Retour sur la première : + currentVideo=document.querySelector("#video3 video"); + nextVideo=document.querySelector("#video1 video"); + currentVideo.dispatchEvent(new Event("ended")); + expect(nextVideo.currentTime).toEqual(0); + }); it("Doit demander le lancement des nouvelles vidéos affichées, si cela est demandé en option.", () => {