diff --git a/inst/reveal.js-4.1.2/test/test-multiple-instances.html b/inst/reveal.js-4.1.2/test/test-multiple-instances.html
new file mode 100644
index 0000000..c831b62
--- /dev/null
+++ b/inst/reveal.js-4.1.2/test/test-multiple-instances.html
@@ -0,0 +1,103 @@
+<!doctype html>
+<html lang="en">
+
+	<head>
+		<meta charset="utf-8">
+
+		<title>reveal.js - Test Iframes</title>
+
+		<link rel="stylesheet" href="../dist/reveal.css">
+		<link rel="stylesheet" href="../node_modules/qunit/qunit/qunit.css">
+		<script src="../node_modules/qunit/qunit/qunit.js"></script>
+	</head>
+
+	<body style="overflow: auto;">
+
+		<div id="qunit"></div>
+		<div id="qunit-fixture"></div>
+
+		<div class="deck1">
+			<div class="reveal" style="display: none;">
+				<div class="slides">
+					<section>1.1</section>
+					<section data-state="deck1slide2">1.2</section>
+					<section>1.3</section>
+				</div>
+			</div>
+		</div>
+
+		<div class="deck2">
+			<div class="reveal" style="display: none;">
+				<div class="slides">
+					<section>2.1</section>
+					<section>2.2</section>
+					<section>2.3</section>
+				</div>
+			</div>
+		</div>
+
+		<script type="module">
+
+			import Reveal from '../dist/reveal.esm.js';
+			import Zoom from '../plugin/zoom/zoom.esm.js';
+
+			QUnit.module( 'Multiple reveal.js instances' );
+
+			let r1 = new Reveal( document.querySelector( '.deck1 .reveal' ), {
+				embedded: true,
+				keyboard: true,
+				plugins: [ Zoom ]
+			} );
+			r1.initialize();
+
+			let r2 = new Reveal( document.querySelector( '.deck2 .reveal' ), {
+				embedded: true,
+				keyboard: false
+			} );
+			r2.initialize();
+
+			QUnit.test( 'Can make independent changes', function( assert ) {
+
+				r1.slide(1);
+				r2.slide(2);
+				assert.strictEqual( r1.getCurrentSlide().textContent, '1.2' );
+				assert.strictEqual( r2.getCurrentSlide().textContent, '2.3' );
+
+				r2.toggleOverview( true );
+				assert.strictEqual( r1.isOverview(), false );
+				assert.strictEqual( r2.isOverview(), true );
+				r2.toggleOverview( false );
+
+				assert.strictEqual( r1.getConfig().keyboard, true );
+				assert.strictEqual( r2.getConfig().keyboard, false );
+
+			});
+
+			QUnit.test( 'Can register plugins independently', function( assert ) {
+
+				assert.ok( r1.hasPlugin( 'zoom' ) );
+				assert.notOk( r2.hasPlugin( 'zoom' ) );
+
+			});
+
+			QUnit.test( 'Slide state is set at the viewport level', function( assert ) {
+
+				r1.slide(1);
+
+				assert.ok( r1.getViewportElement().classList.contains( r1.getCurrentSlide().getAttribute( 'data-state' ) ) );
+
+				r1.slide(2);
+
+				assert.ok( !r1.getViewportElement().classList.contains( r1.getCurrentSlide().getAttribute( 'data-state' ) ), 'unset' );
+
+			});
+
+		</script>
+		<script>
+			QUnit.test( 'Reveal does not leak to window', function( assert ) {
+				assert.strictEqual( window.Reveal, undefined );
+			});
+		</script>
+
+	</body>
+</html>
