diff --git a/client/site_tests/webrtc_PausePlayPeerConnections/control.audio b/client/site_tests/webrtc_PausePlayPeerConnections/control.audio
new file mode 100644
index 0000000..7f203b5
--- /dev/null
+++ b/client/site_tests/webrtc_PausePlayPeerConnections/control.audio
@@ -0,0 +1,25 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+AUTHOR = "malmnas@google.com, hangouts-engprod-sto@google.com"
+NAME = "webrtc_PausePlayPeerConnections.audio"
+PURPOSE = "Ensures frequent pause and plays of peer connection streams work"
+CRITERIA = "Fails if the tab freezes during the test"
+ATTRIBUTES = "suite:hotrod, suite:bluestreak"
+TIME = "MEDIUM"
+TEST_CATEGORY = "Stress"
+TEST_CLASS = "audio"
+TEST_TYPE = "client"
+BUG_TEMPLATE = {
+    "labels": ["OS-Chrome"],
+    "components": ["OS>Kernel>Audio"],
+}
+
+DOC = """
+This test starts 10 peer connections with audio streams.
+The tests randomly pauses and plays the streams.
+"""
+
+job.run_test("webrtc_PausePlayPeerConnections", element_type='audio')
+
diff --git a/client/site_tests/webrtc_PausePlayPeerConnections/control.video b/client/site_tests/webrtc_PausePlayPeerConnections/control.video
index 25ef090..694a3fe 100644
--- a/client/site_tests/webrtc_PausePlayPeerConnections/control.video
+++ b/client/site_tests/webrtc_PausePlayPeerConnections/control.video
@@ -6,7 +6,7 @@
 NAME = "webrtc_PausePlayPeerConnections.video"
 PURPOSE = "Ensures frequent pause and plays of peer connection streams work"
 CRITERIA = "Fails if the tab freezes during the test"
-ATTRIBUTES = "suite:hotrod"
+ATTRIBUTES = "suite:hotrod, suite:bluestreak"
 TIME = "MEDIUM"
 TEST_CATEGORY = "Stress"
 TEST_CLASS = "video"
@@ -23,5 +23,5 @@
 This is a regression test for bug 718369.
 """
 
-job.run_test("webrtc_PausePlayPeerConnections")
+job.run_test("webrtc_PausePlayPeerConnections", element_type='video')
 
diff --git a/client/site_tests/webrtc_PausePlayPeerConnections/pause-play.js b/client/site_tests/webrtc_PausePlayPeerConnections/pause-play.js
index 44c3d51..6056897 100644
--- a/client/site_tests/webrtc_PausePlayPeerConnections/pause-play.js
+++ b/client/site_tests/webrtc_PausePlayPeerConnections/pause-play.js
@@ -14,7 +14,7 @@
 }
 
 /**
- * FeedTable stores all video elements.
+ * FeedTable stores all elements.
  */
 class FeedTable {
   constructor() {
@@ -24,49 +24,45 @@
     this.row = this.testTable.insertRow(-1);
   }
 
-  addNewCell() {
+  addNewCell(elementType) {
     if (this.col == this.numCols) {
       this.row = this.testTable.insertRow(-1);
       this.col = 0;
     }
     var newCell = this.row.insertCell(-1);
-    var video = document.createElement('video');
-    video.autoplay = false;
-    newCell.appendChild(video);
+    var element = document.createElement(elementType);
+    element.autoplay = false;
+    newCell.appendChild(element);
     this.col++;
-    return video;
+    return element;
   }
 }
 
 /**
  * A simple loopback connection;
- * - localConnection is fed video from local camera
+ * - localConnection is fed video/audio from source
  * - localConnection is linked to remoteConnection
  * - remoteConnection is displayed in the given videoElement
  */
 class PeerConnection {
 
   /**
-   * @param {number} id
-   * @param {Object} videoElement
+   * @param {!HTMLMediaElement} element - And 'audio' or 'video' element.
+   * @param {!Object} constraints - The constraints for the peer connection.
    */
-  constructor(videoElement) {
+  constructor(element, constraints) {
     this.localConnection = null;
     this.remoteConnection = null;
-    this.remoteView = videoElement;
+    this.remoteElement = element;
+    this.constraints = constraints;
   }
 
   start() {
     return navigator.mediaDevices
-        .getUserMedia({
-          audio: true,
-          video: {
-            mandatory: {
-              maxWidth: 300,
-              minWidth: 300,
-            }
-          }
-        }).then((stream) => {this.onGetUserMediaSuccess(stream)});
+        .getUserMedia(this.constraints)
+        .then((stream) => {
+            this.onGetUserMediaSuccess(stream)
+        });
   };
 
   onGetUserMediaSuccess(stream) {
@@ -81,7 +77,7 @@
       this.onIceCandidate(this.localConnection, event);
     };
     this.remoteConnection.onaddstream = (e) => {
-      this.remoteView.srcObject = e.stream;
+      this.remoteElement.srcObject = e.stream;
     };
 
     this.localConnection
@@ -114,7 +110,7 @@
   constructor(runtimeSeconds, pausePlayIterationDelayMillis) {
     this.runtimeSeconds = runtimeSeconds;
     this.pausePlayIterationDelayMillis = pausePlayIterationDelayMillis;
-    this.videoElements = [];
+    this.elements = [];
     this.peerConnections = [];
     this.feedTable = new FeedTable();
     this.iteration = 0;
@@ -122,10 +118,20 @@
     this.lastIterationTime;
   }
 
-  addPeerConnection() {
-    const videoElement = this.feedTable.addNewCell();
-    this.videoElements.push(videoElement);
-    this.peerConnections.push(new PeerConnection(videoElement));
+  addPeerConnection(elementType) {
+    const element = this.feedTable.addNewCell(elementType);
+    const constraints = {audio: true};
+    if (elementType === 'video') {
+      constraints.video = {
+        width: {exact: 300}
+      };
+    } else if (elementType === 'audio') {
+      constraints.video = false;
+    } else {
+      throw new Error('elementType must be one of "audio" or "video"');
+    }
+    this.elements.push(element);
+    this.peerConnections.push(new PeerConnection(element, constraints));
   }
 
   startTest() {
@@ -141,7 +147,7 @@
 
   pauseAndPlayLoop() {
     this.iteration++;
-    this.videoElements.forEach((feed) => {
+    this.elements.forEach((feed) => {
       if (Math.random() >= 0.5) {
         feed.play();
       } else {
@@ -155,7 +161,7 @@
       setTimeout(
           () => {this.pauseAndPlayLoop()}, this.pausePlayIterationDelayMillis);
     } else {  // We're done. Pause all feeds.
-      this.videoElements.forEach((feed) => {
+      this.elements.forEach((feed) => {
         feed.pause();
       });
     }
@@ -182,11 +188,12 @@
 let testRunner;
 
 function startTest(
-    runtimeSeconds, numPeerConnections, pausePlayIterationDelayMillis) {
+    runtimeSeconds, numPeerConnections, pausePlayIterationDelayMillis,
+    elementType) {
   testRunner = new TestRunner(
       runtimeSeconds, pausePlayIterationDelayMillis);
   for (let i = 0; i < numPeerConnections; i++) {
-    testRunner.addPeerConnection();
+    testRunner.addPeerConnection(elementType);
   }
   testRunner.startTest();
 }
diff --git a/client/site_tests/webrtc_PausePlayPeerConnections/webrtc_PausePlayPeerConnections.py b/client/site_tests/webrtc_PausePlayPeerConnections/webrtc_PausePlayPeerConnections.py
index a8d7f22..09a630d 100644
--- a/client/site_tests/webrtc_PausePlayPeerConnections/webrtc_PausePlayPeerConnections.py
+++ b/client/site_tests/webrtc_PausePlayPeerConnections/webrtc_PausePlayPeerConnections.py
@@ -31,10 +31,11 @@
     """Tests many peerconnections randomly paused and played."""
     version = 1
 
-    def start_test(self, cr):
+    def start_test(self, cr, element_type):
         """Opens the WebRTC pause-play page.
 
         @param cr: Autotest Chrome instance.
+        @param element_type: 'video' or 'audio'. String.
         """
         cr.browser.platform.SetHTTPServerDirectories(self.bindir)
 
@@ -43,10 +44,11 @@
                 os.path.join(self.bindir, 'pause-play.html')))
         self.tab.WaitForDocumentReadyStateToBeComplete()
         self.tab.EvaluateJavaScript(
-                "startTest(%d, %d, %d)" % (
+                "startTest(%d, %d, %d, %s)" % (
                         TEST_RUNTIME_SECONDS,
                         NUM_PEER_CONNECTIONS,
-                        PAUSE_PLAY_ITERATION_DELAY_MILLIS))
+                        PAUSE_PLAY_ITERATION_DELAY_MILLIS,
+                        element_type))
 
     def wait_test_completed(self, timeout_secs):
         """Waits until the test is done.
@@ -65,12 +67,12 @@
                 desc='pause-play.html reports itself as finished')
 
     @helper_logger.video_log_wrapper
-    def run_once(self):
+    def run_once(self, element_type='video'):
         """Runs the test."""
         with chrome.Chrome(extra_browser_args = EXTRA_BROWSER_ARGS + \
                            [helper_logger.chrome_vmodule_flag()],
                            init_network_controller = True) as cr:
-            self.start_test(cr)
+            self.start_test(cr, element_type)
             self.wait_test_completed(TIMEOUT)
             self.print_result()
 
diff --git a/tko/perf_upload/perf_dashboard_config.json b/tko/perf_upload/perf_dashboard_config.json
index ee033c8..0a9837e 100644
--- a/tko/perf_upload/perf_dashboard_config.json
+++ b/tko/perf_upload/perf_dashboard_config.json
@@ -665,7 +665,11 @@
     "master_name": "ChromeOSVideo"
   },
   {
-    "autotest_name": "video_WebRtcPausePlayPeerConnections",
+    "autotest_name": "webrtc_PausePlayPeerConnections.video",
+    "master_name": "ChromeOSWebRtcVideo"
+  },
+  {
+    "autotest_name": "webrtc_PausePlayPeerConnections.audio",
     "master_name": "ChromeOSWebRtcVideo"
   },
   {
