diff --git a/test/built-ins/Atomics/wait/non-int32-typedarray-throws.js b/test/built-ins/Atomics/wait/non-int32-typedarray-throws.js
index b85963ef59119359ccbf3c1856223aa0a9d804e5..b0de7bcef9c8f76c17d295d9d25f96f4da273ba3 100644
--- a/test/built-ins/Atomics/wait/non-int32-typedarray-throws.js
+++ b/test/built-ins/Atomics/wait/non-int32-typedarray-throws.js
@@ -23,21 +23,21 @@ const poisoned = {
 
 assert.throws(TypeError, function() {
   const view = new Float64Array(
-    new SharedArrayBuffer(Float64Array.BYTES_PER_ELEMENT)
+    new SharedArrayBuffer(Float64Array.BYTES_PER_ELEMENT * 8)
   );
   Atomics.wait(view, poisoned, poisoned, poisoned);
 }, 'Float64Array');
 
 assert.throws(TypeError, function() {
   const view = new Float32Array(
-    new SharedArrayBuffer(Float32Array.BYTES_PER_ELEMENT)
+    new SharedArrayBuffer(Float32Array.BYTES_PER_ELEMENT * 4)
   );
   Atomics.wait(view, poisoned, poisoned, poisoned);
 }, 'Float32Array');
 
 assert.throws(TypeError, function() {
   const view = new Int16Array(
-    new SharedArrayBuffer(Int16Array.BYTES_PER_ELEMENT)
+    new SharedArrayBuffer(Int16Array.BYTES_PER_ELEMENT * 2)
   );
   Atomics.wait(view, poisoned, poisoned, poisoned);
 }, 'Int16Array');
@@ -51,14 +51,14 @@ assert.throws(TypeError, function() {
 
 assert.throws(TypeError, function() {
   const view = new Uint32Array(
-    new SharedArrayBuffer(Uint32Array.BYTES_PER_ELEMENT)
+    new SharedArrayBuffer(Uint32Array.BYTES_PER_ELEMENT * 4)
   );
   Atomics.wait(view, poisoned, poisoned, poisoned);
 }, 'Uint32Array');
 
 assert.throws(TypeError, function() {
   const view = new Uint16Array(
-    new SharedArrayBuffer(Uint16Array.BYTES_PER_ELEMENT)
+    new SharedArrayBuffer(Uint16Array.BYTES_PER_ELEMENT * 2)
   );
   Atomics.wait(view, poisoned, poisoned, poisoned);
 }, 'Uint16Array');
diff --git a/test/built-ins/Atomics/wait/non-shared-bufferdata-throws.js b/test/built-ins/Atomics/wait/non-shared-bufferdata-throws.js
index 5056a28edbc3b7a6414292e3fd43e47caa42f9b4..164af59e2b7b5a69a08a7886a906a9ac2582162a 100644
--- a/test/built-ins/Atomics/wait/non-shared-bufferdata-throws.js
+++ b/test/built-ins/Atomics/wait/non-shared-bufferdata-throws.js
@@ -16,7 +16,7 @@ features: [ArrayBuffer, Atomics, TypedArray]
 ---*/
 
 const i32a = new Int32Array(
-  new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+  new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
 );
 
 const poisoned = {
diff --git a/test/built-ins/Atomics/wake/bigint/non-bigint64-typedarray-throws.js b/test/built-ins/Atomics/wake/bigint/non-bigint64-typedarray-throws.js
index 719bfa730eec188a6cb6a6e632b1f242f7278352..d60d5b6c0d881c39e4675364ff3d51de539fae93 100644
--- a/test/built-ins/Atomics/wake/bigint/non-bigint64-typedarray-throws.js
+++ b/test/built-ins/Atomics/wake/bigint/non-bigint64-typedarray-throws.js
@@ -16,7 +16,7 @@ features: [Atomics, BigInt, TypedArray]
 ---*/
 
 const i64a = new BigUint64Array(
-  new SharedArrayBuffer(BigUint64Array.BYTES_PER_ELEMENT)
+  new SharedArrayBuffer(BigUint64Array.BYTES_PER_ELEMENT * 8)
 );
 
 const poisoned = {
diff --git a/test/built-ins/Atomics/wake/bigint/non-shared-bufferdata-throws.js b/test/built-ins/Atomics/wake/bigint/non-shared-bufferdata-throws.js
index e1c1b391f98d3656b98f2087c3a6a9884a1a12db..a50363cd57a059287e4aac7f4888c7b967bd22d1 100644
--- a/test/built-ins/Atomics/wake/bigint/non-shared-bufferdata-throws.js
+++ b/test/built-ins/Atomics/wake/bigint/non-shared-bufferdata-throws.js
@@ -15,7 +15,7 @@ info: |
 features: [ArrayBuffer, Atomics, BigInt, TypedArray]
 ---*/
 const i64a = new BigInt64Array(
-  new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT)
+  new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 8)
 );
 
 const poisoned = {
diff --git a/test/built-ins/Atomics/wake/count-defaults-to-infinity-missing.js b/test/built-ins/Atomics/wake/count-defaults-to-infinity-missing.js
index 5601d2fe187c78fddf8364b7607dc4fc24968a01..8db6dee17e6bdce17bc23c53baf72392f1730c78 100644
--- a/test/built-ins/Atomics/wake/count-defaults-to-infinity-missing.js
+++ b/test/built-ins/Atomics/wake/count-defaults-to-infinity-missing.js
@@ -16,13 +16,16 @@ includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
+const RUNNING = 0
+const WAIT_INDEX = 1; // Index all agents are waiting on
 const NUMAGENT = 4; // Total number of agents started
-const WAKEUP = 0; // Index all agents are waiting on
+const BUFFER_SIZE = 5; // Index all agents are waiting on
 
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
     const i32a = new Int32Array(sab);
-    $262.agent.report("A " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
+    Atomics.add(i32a, ${RUNNING}, 1);
+    $262.agent.report("A " + Atomics.wait(i32a, ${WAIT_INDEX}, 0, 50));
     $262.agent.leaving();
   });
 `);
@@ -30,7 +33,8 @@ $262.agent.start(`
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
     const i32a = new Int32Array(sab);
-    $262.agent.report("B " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
+    Atomics.add(i32a, ${RUNNING}, 1);
+    $262.agent.report("B " + Atomics.wait(i32a, ${WAIT_INDEX}, 0, 50));
     $262.agent.leaving();
   });
 `);
@@ -38,7 +42,8 @@ $262.agent.start(`
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
     const i32a = new Int32Array(sab);
-    $262.agent.report("C " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
+    Atomics.add(i32a, ${RUNNING}, 1);
+    $262.agent.report("C " + Atomics.wait(i32a, ${WAIT_INDEX}, 0, 50));
     $262.agent.leaving();
   });
 `);
@@ -46,22 +51,25 @@ $262.agent.start(`
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
     const i32a = new Int32Array(sab);
-    $262.agent.report("D " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
+    Atomics.add(i32a, ${RUNNING}, 1);
+    $262.agent.report("D " + Atomics.wait(i32a, ${WAIT_INDEX}, 0, 50));
     $262.agent.leaving();
   });
 `);
 
 const i32a = new Int32Array(
-  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * BUFFER_SIZE)
 );
 
 $262.agent.broadcast(i32a.buffer);
-$262.agent.sleep(100);
+
+// Wait for agents to be running.
+waitUntil(i32a, RUNNING, NUMAGENT);
 
 assert.sameValue(
-  Atomics.wake(i32a, WAKEUP /*, count missing */),
+  Atomics.wake(i32a, WAIT_INDEX /*, count missing */),
   NUMAGENT,
-  'Atomics.wake(i32a, WAKEUP /*, count missing */) equals the value of `NUMAGENT` (4)'
+  'Atomics.wake(i32a, WAIT_INDEX /*, count missing */) equals the value of `NUMAGENT` (4)'
 );
 
 const sortedReports = [];
diff --git a/test/built-ins/Atomics/wake/count-defaults-to-infinity-undefined.js b/test/built-ins/Atomics/wake/count-defaults-to-infinity-undefined.js
index 89b7fc223bbc68ff6f7923f3720dcf9ace227500..cd1e1455a253c22e05f2bfa7fa3a197ac688bae6 100644
--- a/test/built-ins/Atomics/wake/count-defaults-to-infinity-undefined.js
+++ b/test/built-ins/Atomics/wake/count-defaults-to-infinity-undefined.js
@@ -14,13 +14,16 @@ includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
+const RUNNING = 0
+const WAIT_INDEX = 1; // Index all agents are waiting on
 const NUMAGENT = 4; // Total number of agents started
-const WAKEUP = 0; // Index all agents are waiting on
+const BUFFER_SIZE = 5; // Index all agents are waiting on
 
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
     const i32a = new Int32Array(sab);
-    $262.agent.report("A " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
+    Atomics.add(i32a, ${RUNNING}, 1);
+    $262.agent.report("A " + Atomics.wait(i32a, ${WAIT_INDEX}, 0, 50));
     $262.agent.leaving();
   });
 `);
@@ -28,7 +31,8 @@ $262.agent.start(`
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
     const i32a = new Int32Array(sab);
-    $262.agent.report("B " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
+    Atomics.add(i32a, ${RUNNING}, 1);
+    $262.agent.report("B " + Atomics.wait(i32a, ${WAIT_INDEX}, 0, 50));
     $262.agent.leaving();
   });
 `);
@@ -36,7 +40,8 @@ $262.agent.start(`
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
     const i32a = new Int32Array(sab);
-    $262.agent.report("C " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
+    Atomics.add(i32a, ${RUNNING}, 1);
+    $262.agent.report("C " + Atomics.wait(i32a, ${WAIT_INDEX}, 0, 50));
     $262.agent.leaving();
   });
 `);
@@ -44,23 +49,25 @@ $262.agent.start(`
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
     const i32a = new Int32Array(sab);
-    $262.agent.report("D " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
+    Atomics.add(i32a, ${RUNNING}, 1);
+    $262.agent.report("D " + Atomics.wait(i32a, ${WAIT_INDEX}, 0, 50));
     $262.agent.leaving();
   });
 `);
 
 const i32a = new Int32Array(
-  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * BUFFER_SIZE)
 );
 
 $262.agent.broadcast(i32a.buffer);
 
-$262.agent.sleep(20); // half of timeout
+// Wait for agents to be running.
+waitUntil(i32a, RUNNING, NUMAGENT);
 
 assert.sameValue(
-  Atomics.wake(i32a, WAKEUP, undefined),
+  Atomics.wake(i32a, WAIT_INDEX, undefined),
   NUMAGENT,
-  'Atomics.wake(i32a, WAKEUP, undefined) equals the value of `NUMAGENT` (4)'
+  'Atomics.wake(i32a, WAIT_INDEX, undefined) equals the value of `NUMAGENT` (4)'
 );
 
 const sortedReports = [];
diff --git a/test/built-ins/Atomics/wake/non-int32-typedarray-throws.js b/test/built-ins/Atomics/wake/non-int32-typedarray-throws.js
index 2ca5c7d46fca1aa54827ab24ed1c4c45bdb1d73e..aea70d3e45c54d5cc2b5ea13586aeab1e574e122 100644
--- a/test/built-ins/Atomics/wake/non-int32-typedarray-throws.js
+++ b/test/built-ins/Atomics/wake/non-int32-typedarray-throws.js
@@ -23,21 +23,21 @@ const poisoned = {
 
 assert.throws(TypeError, function() {
   const view = new Float64Array(
-    new SharedArrayBuffer(Float64Array.BYTES_PER_ELEMENT)
+    new SharedArrayBuffer(Float64Array.BYTES_PER_ELEMENT * 8)
   );
   Atomics.wake(view, poisoned, poisoned);
 }, '`Atomics.wake(view), poisoned, poisoned)` throws TypeError');
 
 assert.throws(TypeError, function() {
   const view = new Float32Array(
-    new SharedArrayBuffer(Float32Array.BYTES_PER_ELEMENT)
+    new SharedArrayBuffer(Float32Array.BYTES_PER_ELEMENT * 4)
   );
   Atomics.wake(view, poisoned, poisoned);
 }, '`Atomics.wake(view), poisoned, poisoned)` throws TypeError');
 
 assert.throws(TypeError, function() {
   const view = new Int16Array(
-    new SharedArrayBuffer(Int16Array.BYTES_PER_ELEMENT)
+    new SharedArrayBuffer(Int16Array.BYTES_PER_ELEMENT * 2)
   );
   Atomics.wake(view, poisoned, poisoned);
 }, '`Atomics.wake(view), poisoned, poisoned)` throws TypeError');
@@ -51,14 +51,14 @@ assert.throws(TypeError, function() {
 
 assert.throws(TypeError, function() {
   const view = new Uint32Array(
-    new SharedArrayBuffer(Uint32Array.BYTES_PER_ELEMENT)
+    new SharedArrayBuffer(Uint32Array.BYTES_PER_ELEMENT * 4)
   );
   Atomics.wake(new Uint32Array(),  poisoned, poisoned);
 }, '`Atomics.wake(view), poisoned, poisoned)` throws TypeError');
 
 assert.throws(TypeError, function() {
   const view = new Uint16Array(
-    new SharedArrayBuffer(Uint16Array.BYTES_PER_ELEMENT)
+    new SharedArrayBuffer(Uint16Array.BYTES_PER_ELEMENT * 2)
   );
   Atomics.wake(view, poisoned, poisoned);
 }, '`Atomics.wake(view), poisoned, poisoned)` throws TypeError');
diff --git a/test/built-ins/Atomics/wake/non-shared-bufferdata-throws.js b/test/built-ins/Atomics/wake/non-shared-bufferdata-throws.js
index ddfd3ce87b014f0315b36e08fb440a8f515fa39d..894c78efc3a92709ca94cf8d58de4e3bb05288ca 100644
--- a/test/built-ins/Atomics/wake/non-shared-bufferdata-throws.js
+++ b/test/built-ins/Atomics/wake/non-shared-bufferdata-throws.js
@@ -16,7 +16,7 @@ features: [ArrayBuffer, Atomics, TypedArray]
 ---*/
 
 const i32a = new Int32Array(
-  new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+  new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
 );
 
 const poisoned = {
diff --git a/test/built-ins/Atomics/wake/non-shared-bufferdatate-non-shared-int-views.js b/test/built-ins/Atomics/wake/non-shared-bufferdatate-non-shared-int-views.js
index 289530bb21e77c065c4cccaaeb4ab10505c8143a..6b46aff51316bdd1ac957f6112530d9c3b18007b 100644
--- a/test/built-ins/Atomics/wake/non-shared-bufferdatate-non-shared-int-views.js
+++ b/test/built-ins/Atomics/wake/non-shared-bufferdatate-non-shared-int-views.js
@@ -9,7 +9,7 @@ includes: [testTypedArray.js]
 features: [ArrayBuffer, Atomics, TypedArray]
 ---*/
 
-const nonsab = new ArrayBuffer(16);
+const nonsab = new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4);
 
 const poisoned = {
   valueOf: function() {
diff --git a/test/built-ins/Atomics/wake/non-shared-int-views.js b/test/built-ins/Atomics/wake/non-shared-int-views.js
index 64e69bd3b990fb9915b9392189343f8908a9838f..04b901edd0bbe9e51012016beb1f6d64e8e4ae6e 100644
--- a/test/built-ins/Atomics/wake/non-shared-int-views.js
+++ b/test/built-ins/Atomics/wake/non-shared-int-views.js
@@ -9,7 +9,7 @@ includes: [testTypedArray.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
-const sab = new SharedArrayBuffer(16);
+const sab = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4);
 
 const poisoned = {
   valueOf: function() {