diff --git a/test/utils/video.test.js b/test/utils/video.test.js
new file mode 100644
index 0000000..3ad9cad
--- /dev/null
+++ b/test/utils/video.test.js
@@ -0,0 +1,52 @@
+import Video from '../../src/js/plugins/video';
+import DOM from '../../src/js/utils/dom';
+
+// Copy of DOM.fireEvent, but using touch offets
+const fireEvent = (target, eventType, offsetX, offsetY, touches) => {
+ const event = new CustomEvent(eventType);
+
+ event.offsetX = offsetX;
+ event.offsetY = offsetY;
+ event.touches = touches;
+
+ target.dispatchEvent(event);
+};
+
+beforeAll(() => {
+ const slides = '12345'.replace(/(\d)/g, '
');
+ document.body.innerHTML = `${slides}
`;
+});
+
+test('Video utility', () => {
+
+ const ws = document.getElementById('webslides');
+ const slides = ws.querySelectorAll('.slide');
+ const videos = ws.querySelectorAll('video');
+ const play = jest.fn();
+ const pause = jest.fn();
+ videos.forEach( video => {
+ video.play = play;
+ video.pause = pause;
+ })
+
+ const webslides = {
+ el: ws,
+ slides: []
+ };
+ slides.forEach( slide => webslides.slides.push({el: slide}));
+
+ expect(ws.querySelectorAll('video[autoplay]').length).toBe(5);
+
+ const video = new Video(webslides);
+
+ expect(ws.querySelectorAll('video[autoplay]').length).toBe(0);
+ expect(pause.mock.calls.length).toBe(5);
+
+ webslides.slides.forEach( slide => {
+ DOM.fireEvent(slide.el, 'slide:enable', {slide: slide});
+ DOM.fireEvent(slide.el, 'slide:disable', {slide: slide});
+ })
+
+ expect(pause.mock.calls.length).toBe(10);
+
+});