From ac59dcb5259f486c9dd3378b087e634148b0c06e Mon Sep 17 00:00:00 2001
From: Hakim El Hattab <hakim.elhattab@gmail.com>
Date: Mon, 17 Feb 2020 10:19:47 +0100
Subject: [PATCH] additional auto-animate tests

---
 js/reveal.js                |  9 +++++----
 test/test-auto-animate.html | 18 ++++++++++++++++++
 2 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/js/reveal.js b/js/reveal.js
index 376a57ec..5e2cf507 100644
--- a/js/reveal.js
+++ b/js/reveal.js
@@ -3866,7 +3866,6 @@
 			// Create a new auto-animate sheet
 			autoAnimateStyleSheet = autoAnimateStyleSheet || document.createElement( 'style' );
 			autoAnimateStyleSheet.type = 'text/css';
-			autoAnimateStyleSheet.className = 'auto-animate-styes';
 			document.head.appendChild( autoAnimateStyleSheet );
 
 			var slideOptions = getAutoAnimateOptions( toSlide, {
@@ -3904,10 +3903,12 @@
 
 			// Start the animation next cycle
 			requestAnimationFrame( function() {
-				// This forces our newly injected styles to be applied in Firefox
-				getComputedStyle( autoAnimateStyleSheet ).fontWeight;
+				if( autoAnimateStyleSheet ) {
+					// This forces our newly injected styles to be applied in Firefox
+					getComputedStyle( autoAnimateStyleSheet ).fontWeight;
 
-				toSlide.dataset.autoAnimate = 'running';
+					toSlide.dataset.autoAnimate = 'running';
+				}
 			} );
 
 		}
diff --git a/test/test-auto-animate.html b/test/test-auto-animate.html
index 116e4d48..60c32f4b 100644
--- a/test/test-auto-animate.html
+++ b/test/test-auto-animate.html
@@ -52,6 +52,7 @@
 
 			const slides = Array.prototype.map.call( document.querySelectorAll( '.slides section' ), slide => {
 				return {
+					slide: slide,
 					h1: slide.querySelector( 'h1' ),
 					h2: slide.querySelector( 'h2' ),
 					h3: slide.querySelector( 'h3' )
@@ -102,6 +103,23 @@
 					slides[1].h1.addEventListener( 'transitionend', callback );
 				});
 
+				QUnit.test( 'Does not add [data-auto-animate] on non auto-animated slides', assert => {
+					Reveal.slide(2);
+					Reveal.next();
+					assert.ok( slides[3].slide.hasAttribute( 'data-auto-animate' ) === false )
+				});
+
+				QUnit.test( 'autoAnimate config option', assert => {
+					Reveal.configure({ autoAnimate: false });
+
+					assert.ok( document.querySelectorAll( 'data-auto-animate-target' ).length === 0, 'Removes all [data-auto-animate-target]' )
+					assert.ok( Array.prototype.every.call( document.querySelectorAll( 'section[data-auto-animate]' ), el => {
+						return el.dataset.autoAnimate === '';
+					}, 'All data-auto-animate attributes are reset' ) );
+
+					Reveal.configure({ autoAnimate: true });
+				});
+
 			} );
 
 			Reveal.initialize();
-- 
GitLab