diff --git a/__tests__/src/lib/MiradorViewer.test.js b/__tests__/src/lib/MiradorViewer.test.js
index f3f2702b66bfb4d40bcdf3e0851332257b56ae49..95e24df1a37ef6281bee1149ddec896302ff40fb 100644
--- a/__tests__/src/lib/MiradorViewer.test.js
+++ b/__tests__/src/lib/MiradorViewer.test.js
@@ -7,12 +7,19 @@ jest.mock('react-dom');
 jest.mock('isomorphic-unfetch', () => jest.fn(() => Promise.resolve({ json: () => ({}) })));
 
 describe('MiradorViewer', () => {
+  let container;
   let instance;
   beforeAll(() => {
+    container = document.createElement('div');
+    container.id = 'mirador';
+    document.body.appendChild(container);
     ReactDOM.render = jest.fn();
     ReactDOM.unmountComponentAtNode = jest.fn();
     instance = new MiradorViewer({ id: 'mirador' });
   });
+  afterAll(() => {
+    document.body.removeChild(container);
+  });
   describe('constructor', () => {
     it('returns viewer store', () => {
       expect(instance.store.dispatch).toBeDefined();
diff --git a/src/lib/MiradorViewer.js b/src/lib/MiradorViewer.js
index c9238b84d9057a70b8c96dd543ca2584177333ed..cd825870d784d8f94c418f620a51c7be3c83836c 100644
--- a/src/lib/MiradorViewer.js
+++ b/src/lib/MiradorViewer.js
@@ -19,10 +19,13 @@ class MiradorViewer {
     this.store = viewerConfig.store
       || createPluggableStore(this.config, this.plugins);
 
-    config.id && ReactDOM.render(
-      this.render(),
-      document.getElementById(config.id),
-    );
+    if (config.id) {
+      this.container = document.getElementById(config.id);
+      config.id && ReactDOM.render(
+        this.render(),
+        this.container,
+      );
+    }
   }
 
   /**
@@ -40,7 +43,7 @@ class MiradorViewer {
    * Cleanup method to unmount Mirador from the dom
    */
   unmount() {
-    this.config.id && ReactDOM.unmountComponentAtNode(document.getElementById(this.config.id));
+    this.container && ReactDOM.unmountComponentAtNode(this.container);
   }
 }