From 7f3a1c1be970b62defe0bc4a542c6efb9d0295bb Mon Sep 17 00:00:00 2001
From: Rick Waldron <waldron.rick@gmail.com>
Date: Mon, 21 May 2018 14:23:15 -0400
Subject: [PATCH] Atomics: moves getReport and waitUntil into atomicsHelper.js;
 broad updates to all Atomics.wait tests

---
 harness/atomicsHelper.js                      |  49 ++++++++-
 harness/features.yml                          |   1 +
 harness/testAtomics.js                        |  19 ++--
 test/built-ins/Atomics/wait/bad-range.js      |   5 +-
 .../Atomics/wait/bigint/bad-range.js          |   9 +-
 .../wait/bigint/cannot-suspend-throws.js      |   5 +-
 .../wait/bigint/false-for-timeout-agent.js    |  34 +++---
 .../Atomics/wait/bigint/false-for-timeout.js  |   9 +-
 .../Atomics/wait/bigint/good-views.js         |  18 +--
 .../Atomics/wait/bigint/nan-for-timeout.js    |  13 +--
 .../wait/bigint/negative-index-throws.js      |   2 +-
 .../wait/bigint/negative-timeout-agent.js     |  16 +--
 ....js => no-spurious-wakeup-no-operation.js} |  30 ++---
 .../wait/bigint/no-spurious-wakeup-on-add.js  |  18 +--
 .../wait/bigint/no-spurious-wakeup-on-and.js  |  11 +-
 .../no-spurious-wakeup-on-compareExchange.js  |  11 +-
 .../bigint/no-spurious-wakeup-on-exchange.js  |  11 +-
 .../wait/bigint/no-spurious-wakeup-on-or.js   |  11 +-
 .../bigint/no-spurious-wakeup-on-store.js     |   9 +-
 .../wait/bigint/no-spurious-wakeup-on-sub.js  |  11 +-
 .../wait/bigint/no-spurious-wakeup-on-xor.js  |  11 +-
 .../bigint/non-bigint64-typedarray-throws.js  |  33 ++++--
 .../bigint/non-shared-bufferdata-throws.js    |  13 ++-
 .../wait/bigint/null-bufferdata-throws.js     |  33 ++++--
 .../wait/bigint/out-of-range-index-throws.js  |   2 +-
 .../Atomics/wait/bigint/value-not-equal.js    |  11 +-
 .../waiterlist-block-indexedposition-wake.js  |  18 +--
 .../waiterlist-order-of-operations-is-fifo.js | 104 ++++++++----------
 .../wait/bigint/was-woken-before-timeout.js   |  39 +++----
 .../Atomics/wait/bigint/was-woken.js          |  32 ------
 .../Atomics/wait/cannot-suspend-throws.js     |   5 +-
 test/built-ins/Atomics/wait/did-timeout.js    |  42 -------
 .../Atomics/wait/false-for-timeout-agent.js   |  52 ++++-----
 .../Atomics/wait/false-for-timeout.js         |   6 +-
 test/built-ins/Atomics/wait/good-views.js     |  68 ++++++------
 .../built-ins/Atomics/wait/nan-for-timeout.js |  23 ++--
 .../Atomics/wait/negative-index-throws.js     |  12 +-
 .../Atomics/wait/negative-timeout-agent.js    |  28 ++---
 .../Atomics/wait/negative-timeout.js          |   5 +-
 .../Atomics/wait/no-spurious-wakeup-on-add.js |  14 +--
 .../Atomics/wait/no-spurious-wakeup-on-and.js |   8 +-
 .../no-spurious-wakeup-on-compareExchange.js  |   8 +-
 .../wait/no-spurious-wakeup-on-exchange.js    |   8 +-
 .../Atomics/wait/no-spurious-wakeup-on-or.js  |   8 +-
 .../wait/no-spurious-wakeup-on-store.js       |   8 +-
 .../Atomics/wait/no-spurious-wakeup-on-sub.js |   8 +-
 .../Atomics/wait/no-spurious-wakeup-on-xor.js |   8 +-
 .../wait/non-int32-typedarray-throws.js       |  44 ++++++--
 .../wait/non-shared-bufferdata-throws.js      |   9 +-
 .../Atomics/wait/not-a-typedarray-throws.js   |   2 +-
 .../Atomics/wait/not-an-object-throws.js      |   4 +-
 .../Atomics/wait/null-bufferdata-throws.js    |  15 ++-
 .../Atomics/wait/null-for-timeout-agent.js    |  65 +++++------
 .../Atomics/wait/null-for-timeout.js          |   9 +-
 .../Atomics/wait/object-for-timeout-agent.js  |  79 ++++++-------
 .../Atomics/wait/object-for-timeout.js        |  18 +--
 .../Atomics/wait/out-of-range-index-throws.js |   8 +-
 ...oisoned-object-for-timeout-throws-agent.js |  83 +++++++-------
 .../poisoned-object-for-timeout-throws.js     |  11 +-
 .../wait/symbol-for-index-throws-agent.js     |  79 ++++++-------
 .../Atomics/wait/symbol-for-index-throws.js   |  17 +--
 .../wait/symbol-for-timeout-throws-agent.js   |  55 +++++----
 .../Atomics/wait/symbol-for-timeout-throws.js |   4 +-
 .../wait/symbol-for-value-throws-agent.js     |  76 ++++++-------
 .../Atomics/wait/symbol-for-value-throws.js   |  11 +-
 .../Atomics/wait/true-for-timeout-agent.js    |  65 +++++------
 .../Atomics/wait/true-for-timeout.js          |  15 +--
 .../Atomics/wait/undefined-for-timeout.js     |  50 ++++-----
 .../wait/undefined-index-defaults-to-zero.js  |  29 ++---
 .../built-ins/Atomics/wait/value-not-equal.js |  30 ++---
 .../wait/wait-index-value-not-equal.js        |  34 +++---
 .../waiterlist-block-indexedposition-wake.js  |  21 ++--
 .../waiterlist-order-of-operations-is-fifo.js |  50 ++++-----
 .../Atomics/wait/was-woken-before-timeout.js  |  43 ++++----
 test/built-ins/Atomics/wait/was-woken.js      |  32 ------
 test/built-ins/Atomics/wake/bad-range.js      |   2 +-
 .../Atomics/wake/bigint/bad-range.js          |   2 +-
 .../bigint/non-bigint64-typedarray-throws.js  |   4 +-
 .../bigint/non-shared-bufferdata-throws.js    |   6 +-
 .../wake/bigint/null-bufferdata-throws.js     |   4 +-
 .../Atomics/wake/bigint/wake-all-on-loc.js    |  59 +++++-----
 .../Atomics/wake/count-boundary-cases.js      |  24 +++-
 .../count-defaults-to-infinity-missing.js     |  60 +++++-----
 .../count-defaults-to-infinity-undefined.js   |  71 ++++++------
 .../built-ins/Atomics/wake/count-from-nans.js |   2 +-
 .../Atomics/wake/count-symbol-throws.js       |   2 +-
 ...count-tointeger-throws-then-wake-throws.js |   4 +-
 test/built-ins/Atomics/wake/good-views.js     |   4 +-
 test/built-ins/Atomics/wake/negative-count.js |  28 ++---
 .../Atomics/wake/negative-index-throws.js     |  10 +-
 .../wake/non-int32-typedarray-throws.js       |  18 +--
 .../wake/non-shared-bufferdata-throws.js      |   6 +-
 test/built-ins/Atomics/wake/non-views.js      |   2 +-
 .../Atomics/wake/nonshared-int-views.js       |   2 +-
 .../Atomics/wake/not-a-typedarray-throws.js   |   6 +-
 .../Atomics/wake/not-an-object-throws.js      |  16 +--
 .../Atomics/wake/null-bufferdata-throws.js    |   4 +-
 .../Atomics/wake/out-of-range-index-throws.js |   8 +-
 .../Atomics/wake/shared-nonint-views.js       |   2 +-
 .../Atomics/wake/symbol-for-index-throws.js   |  10 +-
 .../wake/undefined-index-defaults-to-zero.js  |  66 +++++------
 .../built-ins/Atomics/wake/wake-all-on-loc.js |  74 ++++++-------
 test/built-ins/Atomics/wake/wake-all.js       |  71 +++++-------
 test/built-ins/Atomics/wake/wake-in-order.js  |  57 ++++------
 test/built-ins/Atomics/wake/wake-nan.js       |  27 ++---
 test/built-ins/Atomics/wake/wake-one.js       |  72 +++++-------
 .../Atomics/wake/wake-rewake-noop.js          |  45 +++-----
 test/built-ins/Atomics/wake/wake-two.js       |  55 ++++-----
 .../wake/wake-with-no-agents-waiting.js       |  30 ++---
 .../wake-with-no-matching-agents-waiting.js   |  28 ++---
 test/built-ins/Atomics/wake/wake-zero.js      |  54 ++++-----
 111 files changed, 1239 insertions(+), 1553 deletions(-)
 rename test/built-ins/Atomics/wait/bigint/{did-timeout.js => no-spurious-wakeup-no-operation.js} (59%)
 delete mode 100644 test/built-ins/Atomics/wait/bigint/was-woken.js
 delete mode 100644 test/built-ins/Atomics/wait/did-timeout.js
 delete mode 100644 test/built-ins/Atomics/wait/was-woken.js

diff --git a/harness/atomicsHelper.js b/harness/atomicsHelper.js
index 5265061708..81ed6d30d8 100644
--- a/harness/atomicsHelper.js
+++ b/harness/atomicsHelper.js
@@ -1,9 +1,50 @@
 // Copyright (C) 2017 Ecma International.  All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-description: |
-    The amount of slack allowed for testing time-related Atomics methods (i.e.
-    wait and wake). The absolute value of the difference of the observed time
-    and the expected time must be epsilon-close.
+description: >
+    Collection of functions used to interact with Atomics.* operations across agent boundaries.
 ---*/
+
+var helper = helper || {};
+
+/**
+ * The amount of slack allowed for testing time-related Atomics methods (i.e. wait and wake).
+ * The absolute value of the difference of the observed time and the expected time must
+ * be epsilon-close.
+ */
 var $ATOMICS_MAX_TIME_EPSILON = 100;
+
+/**
+ *
+ * @return {[type]} [description]
+ */
+function getReport() {
+  var r;
+  while ((r = $262.agent.getReport()) == null) {
+    $262.agent.sleep(10);
+  }
+  return r;
+}
+/**
+ * With a given Int32Array, wait until the expected number of agents have reported themselves by
+ * calling:
+ *
+ *    Atomics.add(i32a, index, 1);
+ *
+ * @param {Int32Array} i32a An Int32Array with a SharedArrayBuffer
+ * @param {Number} index    The index of which all agents will report.
+ * @param {Number} expected The number of agents that are expected to report as active.
+ */
+function waitUntil(i32a, index, expected ) {
+  var i = 0;
+  while (Atomics.load(i32a, index) !== expected  && i < 15) {
+    $262.agent.sleep(10);
+    i++;
+  }
+  const agents = Atomics.load(i32a, index);
+  assert.sameValue(agents, expected , `'agents' equals the value of expected  (${expected })`);
+}
+
+
+helper.getReport = getReport;
+helper.waitUntil = waitUntil;
diff --git a/harness/features.yml b/harness/features.yml
index b48b15e08b..0e4d950cd2 100644
--- a/harness/features.yml
+++ b/harness/features.yml
@@ -1,3 +1,4 @@
+atomicsHelper: [Atomics]
 typeCoercion.js: [Symbol.toPrimitive, BigInt]
 testAtomics.js: [ArrayBuffer, Atomics, DataView, SharedArrayBuffer, arrow-function, let, for-of]
 testBigIntTypedArray.js: [BigInt, TypedArray]
diff --git a/harness/testAtomics.js b/harness/testAtomics.js
index 81f6af3a60..790773e42b 100644
--- a/harness/testAtomics.js
+++ b/harness/testAtomics.js
@@ -17,7 +17,7 @@ function testWithAtomicsOutOfBoundsIndices(f) {
   var bad_indices = [
     (view) => -1,
     (view) => view.length,
-    (view) => view.length*2,
+    (view) => view.length * 2,
     (view) => Number.POSITIVE_INFINITY,
     (view) => Number.NEGATIVE_INFINITY,
     (view) => ({ valueOf: () => 125 }),
@@ -28,7 +28,7 @@ function testWithAtomicsOutOfBoundsIndices(f) {
     try {
       f(IdxGen);
     } catch (e) {
-      e.message += " (Testing with index gen " + IdxGen + ".)";
+      e.message += ' (Testing with index gen ' + IdxGen + '.)';
       throw e;
     }
   }
@@ -52,7 +52,7 @@ function testWithAtomicsInBoundsIndices(f) {
     (view) => 0.5,
     (view) => '0.5',
     (view) => -0.9,
-    (view) => ({ password: "qumquat" }),
+    (view) => ({ password: 'qumquat' }),
     (view) => view.length - 1,
     (view) => ({ valueOf: () => 0 }),
     (view) => ({ toString: () => '0', valueOf: false }) // non-callable valueOf triggers invocation of toString
@@ -62,7 +62,7 @@ function testWithAtomicsInBoundsIndices(f) {
     try {
       f(IdxGen);
     } catch (e) {
-      e.message += " (Testing with index gen " + IdxGen + ".)";
+      e.message += ' (Testing with index gen ' + IdxGen + '.)';
       throw e;
     }
   }
@@ -85,21 +85,21 @@ function testWithAtomicsNonViewValues(f) {
     10,
     3.14,
     new Number(4),
-    "Hi there",
+    'Hi there',
     new Date,
     /a*utomaton/g,
-    { password: "qumquat" },
+    { password: 'qumquat' },
     new DataView(new ArrayBuffer(10)),
     new ArrayBuffer(128),
     new SharedArrayBuffer(128),
-    new Error("Ouch"),
+    new Error('Ouch'),
     [1,1,2,3,5,8],
     ((x) => -x),
     new Map(),
     new Set(),
     new WeakMap(),
     new WeakSet(),
-    Symbol("halleluja"),
+    Symbol('halleluja'),
     // TODO: Proxy?
     Object,
     Int32Array,
@@ -112,8 +112,9 @@ function testWithAtomicsNonViewValues(f) {
     try {
       f(nonView);
     } catch (e) {
-      e.message += " (Testing with non-view value " + nonView + ".)";
+      e.message += ' (Testing with non-view value ' + nonView + '.)';
       throw e;
     }
   }
 }
+
diff --git a/test/built-ins/Atomics/wait/bad-range.js b/test/built-ins/Atomics/wait/bad-range.js
index b435060181..07373b8055 100644
--- a/test/built-ins/Atomics/wait/bad-range.js
+++ b/test/built-ins/Atomics/wait/bad-range.js
@@ -15,8 +15,9 @@ includes: [testAtomics.js]
 features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedArrayBuffer, TypedArray]
 ---*/
 
-var sab = new SharedArrayBuffer(8);
-let i32a = new Int32Array(sab);
+var i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
 testWithAtomicsOutOfBoundsIndices(function(IdxGen) {
   assert.throws(RangeError, function() {
diff --git a/test/built-ins/Atomics/wait/bigint/bad-range.js b/test/built-ins/Atomics/wait/bigint/bad-range.js
index f40d76f01a..b9a8a2753d 100644
--- a/test/built-ins/Atomics/wait/bigint/bad-range.js
+++ b/test/built-ins/Atomics/wait/bigint/bad-range.js
@@ -2,9 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-esid: sec-atomics.wake
+esid: sec-atomics.wait
 description: >
-  Test range checking of Atomics.wake on arrays that allow atomic operations
+  Test range checking of Atomics.wait on arrays that allow atomic operations
 info: |
   Atomics.wait( typedArray, index, value, timeout )
 
@@ -15,8 +15,9 @@ includes: [testAtomics.js]
 features: [ArrayBuffer, arrow-function, Atomics, BigInt, DataView, for-of, let, SharedArrayBuffer, TypedArray]
 ---*/
 
-var sab = new SharedArrayBuffer(8);
-let i64a = new BigInt64Array(sab);
+const i64a = new BigInt64Array(
+  new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT)
+);
 
 testWithAtomicsOutOfBoundsIndices(function(IdxGen) {
   assert.throws(RangeError, function() {
diff --git a/test/built-ins/Atomics/wait/bigint/cannot-suspend-throws.js b/test/built-ins/Atomics/wait/bigint/cannot-suspend-throws.js
index f982fd14e7..aaa4b5e438 100644
--- a/test/built-ins/Atomics/wait/bigint/cannot-suspend-throws.js
+++ b/test/built-ins/Atomics/wait/bigint/cannot-suspend-throws.js
@@ -18,8 +18,9 @@ features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 flags: [CanBlockIsFalse]
 ---*/
 
-var buffer = new SharedArrayBuffer(8);
-var i64a = new BigInt64Array(buffer);
+const i64a = new BigInt64Array(
+  new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT)
+);
 
 assert.throws(TypeError, function() {
   Atomics.wait(i64a, 0, 0, 0);
diff --git a/test/built-ins/Atomics/wait/bigint/false-for-timeout-agent.js b/test/built-ins/Atomics/wait/bigint/false-for-timeout-agent.js
index 8adec5ce05..d6f1a85d2c 100644
--- a/test/built-ins/Atomics/wait/bigint/false-for-timeout-agent.js
+++ b/test/built-ins/Atomics/wait/bigint/false-for-timeout-agent.js
@@ -12,37 +12,30 @@ info: |
 
     Boolean -> If argument is true, return 1. If argument is false, return +0.
 
+includes: [atomicsHelper.js]
 features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 ---*/
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
 $262.agent.start(`
-  var valueOf = {
+  const valueOf = {
     valueOf: function() {
       return false;
     }
   };
 
-  var toPrimitive = {
+  const toPrimitive = {
     [Symbol.toPrimitive]: function() {
       return false;
     }
   };
 
   $262.agent.receiveBroadcast(function(sab) {
-    var i64a = new BigInt64Array(sab);
-    var start = $262.agent.monotonicNow();
+    const i64a = new BigInt64Array(sab);
+    const before = $262.agent.monotonicNow();
     $262.agent.report(Atomics.wait(i64a, 0, 0, false));
     $262.agent.report(Atomics.wait(i64a, 0, 0, valueOf));
     $262.agent.report(Atomics.wait(i64a, 0, 0, toPrimitive));
-    $262.agent.report($262.agent.monotonicNow() - start);
+    $262.agent.report($262.agent.monotonicNow() - before);
     $262.agent.leaving();
   });
 `);
@@ -58,11 +51,14 @@ assert.sameValue(getReport(), 'timed-out');
 assert.sameValue(getReport(), 'timed-out');
 assert.sameValue(getReport(), 'timed-out');
 
-var lapse = getReport();
-
-assert(lapse >= 0, 'timeout should be a min of 0ms');
-
-assert(lapse <= $ATOMICS_MAX_TIME_EPSILON, 'timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON');
-
+const lapse = getReport();
+assert(
+  lapse >= 0,
+  `${lapse} should be greater than, or equal to 0`
+);
+assert(
+  lapse <= $ATOMICS_MAX_TIME_EPSILON,
+  `${lapse} should be less than ${$ATOMICS_MAX_TIME_EPSILON}`
+);
 assert.sameValue(Atomics.wake(i64a, 0), 0);
 
diff --git a/test/built-ins/Atomics/wait/bigint/false-for-timeout.js b/test/built-ins/Atomics/wait/bigint/false-for-timeout.js
index 3d9b7f9bbf..80aab8022f 100644
--- a/test/built-ins/Atomics/wait/bigint/false-for-timeout.js
+++ b/test/built-ins/Atomics/wait/bigint/false-for-timeout.js
@@ -16,16 +16,17 @@ features: [Atomics, BigInt, SharedArrayBuffer, Symbol, Symbol.toPrimitive, Typed
 flags: [CanBlockIsFalse]
 ---*/
 
-var buffer = new SharedArrayBuffer(1024);
-var i64a = new BigInt64Array(buffer);
+const i64a = new BigInt64Array(
+  new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT)
+);
 
-var valueOf = {
+const valueOf = {
   valueOf: function() {
     return false;
   }
 };
 
-var toPrimitive = {
+const toPrimitive = {
   [Symbol.toPrimitive]: function() {
     return false;
   }
diff --git a/test/built-ins/Atomics/wait/bigint/good-views.js b/test/built-ins/Atomics/wait/bigint/good-views.js
index eee639f78c..f478ab396a 100644
--- a/test/built-ins/Atomics/wait/bigint/good-views.js
+++ b/test/built-ins/Atomics/wait/bigint/good-views.js
@@ -6,6 +6,7 @@ esid: sec-atomics.wait
 description: >
   Test Atomics.wait on arrays that allow atomic operations,
   in an Agent that is allowed to wait.
+includes: [atomicsHelper.js]
 features: [Atomics, BigInt]
 ---*/
 
@@ -13,17 +14,17 @@ features: [Atomics, BigInt]
 // even in the shell.
 
 $262.agent.start(`
-  var sab = new SharedArrayBuffer(1024);
-  var ab = new ArrayBuffer(16);
+  const sab = new SharedArrayBuffer(1024);
+  const ab = new ArrayBuffer(16);
 
-  var good_indices = [ (view) => 0/-1, // -0
+  const good_indices = [ (view) => 0/-1, // -0
                        (view) => '-0',
                        (view) => view.length - 1,
                        (view) => ({ valueOf: () => 0 }),
                        (view) => ({ toString: () => '0', valueOf: false }) // non-callable valueOf triggers invocation of toString
                      ];
 
-  var view = new BigInt64Array(sab, 32, 20);
+  const view = new BigInt64Array(sab, 32, 20);
 
   view[0] = 0;
   $262.agent.report("A " + Atomics.wait(view, 0, 0, 0))
@@ -45,15 +46,8 @@ $262.agent.start(`
 
 assert.sameValue(getReport(), "A timed-out");
 assert.sameValue(getReport(), "B not-equal"); // Even with zero timeout
+
 var r;
 while ((r = getReport()) != "done") {
   assert.sameValue(r, "C not-equal");
 }
-
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
diff --git a/test/built-ins/Atomics/wait/bigint/nan-for-timeout.js b/test/built-ins/Atomics/wait/bigint/nan-for-timeout.js
index 9543c6118e..de85664164 100644
--- a/test/built-ins/Atomics/wait/bigint/nan-for-timeout.js
+++ b/test/built-ins/Atomics/wait/bigint/nan-for-timeout.js
@@ -13,20 +13,13 @@ info: |
     Undefined    Return NaN.
   5.If q is NaN, let t be +∞, else let t be max(q, 0)
 
+includes: [atomicsHelper.js]
 features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 ---*/
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
-    var i64a = new BigInt64Array(sab);
+    const i64a = new BigInt64Array(sab);
     $262.agent.report(Atomics.wait(i64a, 0, 0, NaN));  // NaN => +Infinity
     $262.agent.leaving();
   });
@@ -39,4 +32,4 @@ const i64a = new BigInt64Array(
 $262.agent.broadcast(i64a.buffer);
 $262.agent.sleep(100);
 assert.sameValue(Atomics.wake(i64a, 0), 1);
-assert.sameValue(getReport(), "ok");
+assert.sameValue(getReport(), 'ok');
diff --git a/test/built-ins/Atomics/wait/bigint/negative-index-throws.js b/test/built-ins/Atomics/wait/bigint/negative-index-throws.js
index 8037e55295..8da783be7d 100644
--- a/test/built-ins/Atomics/wait/bigint/negative-index-throws.js
+++ b/test/built-ins/Atomics/wait/bigint/negative-index-throws.js
@@ -21,7 +21,7 @@ const i64a = new BigInt64Array(
 );
 const poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
diff --git a/test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js b/test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js
index a3de63681a..f8324d04e3 100644
--- a/test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js
+++ b/test/built-ins/Atomics/wait/bigint/negative-timeout-agent.js
@@ -5,21 +5,14 @@
 esid: sec-atomics.wait
 description: >
   Test that Atomics.wait times out with a negative timeout
+includes: [atomicsHelper.js]
 features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 ---*/
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab, id) {
-    var ia = new BigInt64Array(sab);
-    $262.agent.report(Atomics.wait(ia, 0, 0, -5)); // -5 => 0
+    const i64a = new BigInt64Array(sab);
+    $262.agent.report(Atomics.wait(i64a, 0, 0, -5)); // -5 => 0
     $262.agent.leaving();
   });
 `);
@@ -29,5 +22,6 @@ const i64a = new BigInt64Array(
 );
 
 $262.agent.broadcast(i64a.buffer);
-assert.sameValue(getReport(), "timed-out");
+$262.agent.sleep(10);
+assert.sameValue(getReport(), 'timed-out');
 assert.sameValue(Atomics.wake(i64a, 0), 0);
diff --git a/test/built-ins/Atomics/wait/bigint/did-timeout.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-no-operation.js
similarity index 59%
rename from test/built-ins/Atomics/wait/bigint/did-timeout.js
rename to test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-no-operation.js
index e98c78ef51..7e3486dbf6 100644
--- a/test/built-ins/Atomics/wait/bigint/did-timeout.js
+++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-no-operation.js
@@ -1,4 +1,4 @@
-// Copyright (C) 2018 Rick Waldron. All rights reserved.
+// Copyright (C) 2017 Mozilla Corporation.  All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
@@ -12,23 +12,18 @@ description: >
       a. Assert: W is not on the list of waiters in WL.
     19. Else,
       a.Perform RemoveWaiter(WL, W).
+includes: [atomicsHelper.js]
 features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 ---*/
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
+const TIMEOUT = 500;
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab, id) {
     const i64a = new BigInt64Array(sab);
-    const then = $262.agent.monotonicNow();
-    $262.agent.report(Atomics.wait(i64a, 0, 0, 500)); // Timeout 500ms
-    $262.agent.report($262.agent.monotonicNow() - then); // Actual time can be more than 500ms
+    const before = $262.agent.monotonicNow();
+    const unpark = Atomics.wait(i64a, 0, 0, ${TIMEOUT});
+    $262.agent.report($262.agent.monotonicNow() - before);
+    $262.agent.report(unpark);
     $262.agent.leaving();
   });
 `);
@@ -39,6 +34,13 @@ const i64a = new BigInt64Array(
 
 $262.agent.broadcast(i64a.buffer);
 $262.agent.sleep(100);
-assert.sameValue(getReport(), "timed-out");
-assert.sameValue((getReport() | 0) >= 500 - $ATOMICS_MAX_TIME_EPSILON, true);
 
+// NO OPERATION OCCURS HERE!
+
+const lapse = getReport();
+assert(
+  lapse >= TIMEOUT,
+  `${lapse} should be at least ${TIMEOUT}`
+);
+assert.sameValue(getReport(), 'timed-out');
+assert.sameValue(Atomics.wake(i64a, 0), 0);
diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-add.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-add.js
index ee9a78e4dd..afb26a6728 100644
--- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-add.js
+++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-add.js
@@ -4,16 +4,10 @@
 /*---
 esid: sec-atomics.wait
 description: >
-  Demonstrates that Atomics.store(...) is causing a waiting
-features: [Atomics, SharedArrayBuffer, TypedArray]
+  Waiter does not spuriously wake on index which is subject to Add operation
+includes: [atomicsHelper.js]
+features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 ---*/
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
 
 const TIMEOUT = 2000;
 const i64a = new BigInt64Array(
@@ -22,9 +16,9 @@ const i64a = new BigInt64Array(
 
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
-    var i64a = new BigInt64Array(sab);
-    var before = $262.agent.monotonicNow();
-    var unpark = Atomics.wait(i64a, 0, 0, ${TIMEOUT});
+    const i64a = new BigInt64Array(sab);
+    const before = $262.agent.monotonicNow();
+    const unpark = Atomics.wait(i64a, 0, 0, ${TIMEOUT});
     $262.agent.report($262.agent.monotonicNow() - before);
     $262.agent.report(unpark);
     $262.agent.leaving();
diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-and.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-and.js
index 1e056bb72b..533bb27cf1 100644
--- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-and.js
+++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-and.js
@@ -5,16 +5,9 @@
 esid: sec-atomics.wait
 description: >
   Waiter does not spuriously wake on index which is subject to And operation
-features: [Atomics, SharedArrayBuffer, TypedArray]
+includes: [testAtomics.js]
+features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 ---*/
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
 const TIMEOUT = 2000;
 const i64a = new BigInt64Array(
   new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT)
diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-compareExchange.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-compareExchange.js
index ee07ce4edb..60a5b9a2e1 100644
--- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-compareExchange.js
+++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-compareExchange.js
@@ -5,16 +5,9 @@
 esid: sec-atomics.wait
 description: >
   Waiter does not spuriously wake on index which is subject to compareExchange operation
-features: [Atomics, SharedArrayBuffer, TypedArray]
+includes: [testAtomics.js]
+features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 ---*/
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
 const TIMEOUT = 2000;
 const i64a = new BigInt64Array(
   new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT)
diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-exchange.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-exchange.js
index 7c1d11e91b..fa3c7dc027 100644
--- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-exchange.js
+++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-exchange.js
@@ -5,16 +5,9 @@
 esid: sec-atomics.wait
 description: >
   Waiter does not spuriously wake on index which is subject to exchange operation
-features: [Atomics, SharedArrayBuffer, TypedArray]
+includes: [testAtomics.js]
+features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 ---*/
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
 const TIMEOUT = 2000;
 const i64a = new BigInt64Array(
   new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT)
diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-or.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-or.js
index 03d05e02c6..60f004ea21 100644
--- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-or.js
+++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-or.js
@@ -5,16 +5,9 @@
 esid: sec-atomics.wait
 description: >
   Waiter does not spuriously wake on index which is subject to Or operation
-features: [Atomics, SharedArrayBuffer, TypedArray]
+includes: [testAtomics.js]
+features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 ---*/
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
 const TIMEOUT = 2000;
 const i64a = new BigInt64Array(
   new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT)
diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-store.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-store.js
index b97b74ba99..9429f6ef75 100644
--- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-store.js
+++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-store.js
@@ -5,16 +5,9 @@
 esid: sec-atomics.wait
 description: >
   Demonstrates that Atomics.store(...) is causing a waiting
+includes: [testAtomics.js]
 features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 ---*/
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
 const TIMEOUT = 2000;
 const i64a = new BigInt64Array(
   new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT)
diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-sub.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-sub.js
index 7412a9adcb..050749ad9f 100644
--- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-sub.js
+++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-sub.js
@@ -5,16 +5,9 @@
 esid: sec-atomics.wait
 description: >
   Waiter does not spuriously wake on index which is subject to Sub operation
-features: [Atomics, SharedArrayBuffer, TypedArray]
+includes: [testAtomics.js]
+features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 ---*/
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
 const TIMEOUT = 2000;
 const i64a = new BigInt64Array(
   new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT)
diff --git a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-xor.js b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-xor.js
index 20a7113436..47a044c44c 100644
--- a/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-xor.js
+++ b/test/built-ins/Atomics/wait/bigint/no-spurious-wakeup-on-xor.js
@@ -5,16 +5,9 @@
 esid: sec-atomics.wait
 description: >
   Waiter does not spuriously wake on index which is subject to xor operation
-features: [Atomics, SharedArrayBuffer, TypedArray]
+includes: [testAtomics.js]
+features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 ---*/
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
 const TIMEOUT = 2000;
 const i64a = new BigInt64Array(
   new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT)
diff --git a/test/built-ins/Atomics/wait/bigint/non-bigint64-typedarray-throws.js b/test/built-ins/Atomics/wait/bigint/non-bigint64-typedarray-throws.js
index 81b22757fc..8d8ebc0755 100644
--- a/test/built-ins/Atomics/wait/bigint/non-bigint64-typedarray-throws.js
+++ b/test/built-ins/Atomics/wait/bigint/non-bigint64-typedarray-throws.js
@@ -2,27 +2,42 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-esid: sec-atomics.wait
+esid: sec-validatesharedintegertypedarray
 description: >
-  Throws a TypeError if typedArray arg is not an BigInt64Array
+  Throws a TypeError if typedArray arg is not a BigInt64Array
 info: |
   Atomics.wait( typedArray, index, value, timeout )
 
   1.Let buffer be ? ValidateSharedIntegerTypedArray(typedArray, true).
-    ...
-      5.If onlyBigInt64 is true, then
-        If typeName is not "BigInt64Array" or "BigInt64Array", throw a TypeError exception.
-features: [Atomics, Float32Array, Float64Array, Int8Array, TypedArray, Uint16Array, Uint8Array, Uint8ClampedArray]
+  ...
+
+
+  ValidateSharedIntegerTypedArray(typedArray [ , waitable ] )
+
+  ...
+  5. If waitable is true, then
+      a. If typeName is not "Int32Array" or "BigInt64Array",
+      throw a TypeError exception.
+
+features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 includes: [testAtomics.js, testBigIntTypedArray.js]
 ---*/
 
-var poisoned = {
+const i64a = new BigUint64Array(
+  new SharedArrayBuffer(BigUint64Array.BYTES_PER_ELEMENT)
+);
+
+const poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
 assert.throws(TypeError, function() {
-  Atomics.wait(new BigUint64Array(), poisoned, poisoned, poisoned);
+  Atomics.wait(i64a, 0, 0, 0);
+}, 'BigUint64Array');
+
+assert.throws(TypeError, function() {
+  Atomics.wait(i64a, poisoned, poisoned, poisoned);
 }, 'BigUint64Array');
 
diff --git a/test/built-ins/Atomics/wait/bigint/non-shared-bufferdata-throws.js b/test/built-ins/Atomics/wait/bigint/non-shared-bufferdata-throws.js
index 9bb706ff59..cbe7776b1d 100644
--- a/test/built-ins/Atomics/wait/bigint/non-shared-bufferdata-throws.js
+++ b/test/built-ins/Atomics/wait/bigint/non-shared-bufferdata-throws.js
@@ -15,17 +15,20 @@ info: |
 features: [ArrayBuffer, Atomics, BigInt, TypedArray]
 ---*/
 
-var i64a = new BigInt64Array(new ArrayBuffer(4));
-var poisoned = {
+const i64a = new BigInt64Array(
+  new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT)
+);
+
+const poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
 assert.throws(TypeError, function() {
   Atomics.wait(i64a, 0, 0, 0);
-});
+}, 'Atomics.wait(i64a, 0, 0, 0) on ArrayBuffer throws TypeError');
 
 assert.throws(TypeError, function() {
   Atomics.wait(i64a, poisoned, poisoned, poisoned);
-});
+}, 'Atomics.wait(i64a, poisoned, poisoned, poisoned) on ArrayBuffer throws TypeError');
diff --git a/test/built-ins/Atomics/wait/bigint/null-bufferdata-throws.js b/test/built-ins/Atomics/wait/bigint/null-bufferdata-throws.js
index 3707ceafe1..69d24c938e 100644
--- a/test/built-ins/Atomics/wait/bigint/null-bufferdata-throws.js
+++ b/test/built-ins/Atomics/wait/bigint/null-bufferdata-throws.js
@@ -8,23 +8,38 @@ info: |
   Atomics.wait( typedArray, index, value, timeout )
 
   1.Let buffer be ? ValidateSharedIntegerTypedArray(typedArray, true).
-    ...
-      9.If IsSharedArrayBuffer(buffer) is false, throw a TypeError exception.
-        ...
-          3.If bufferData is null, return false.
+  ...
+
+  ValidateSharedIntegerTypedArray(typedArray [ , onlyInt32 ] )
+
+  ...
+  9.If IsSharedArrayBuffer(buffer) is false, throw a TypeError exception.
+
+
+  IsSharedArrayBuffer( obj )
+
+  ...
+  3.If bufferData is null, return false.
+
 includes: [detachArrayBuffer.js]
 features: [ArrayBuffer, Atomics, BigInt, TypedArray]
 ---*/
 
-var i64a = new BigInt64Array(new ArrayBuffer(1024));
-var poisoned = {
+const i64a = new BigInt64Array(
+  new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT)
+);
+const poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
-$DETACHBUFFER(i64a.buffer); // Detaching a non-shared ArrayBuffer sets the [[ArrayBufferData]] value to null
+try {
+  $DETACHBUFFER(i64a.buffer); // Detaching a non-shared ArrayBuffer sets the [[ArrayBufferData]] value to null
+} catch (error) {
+  $ERROR(`An unexpected error occurred when detaching ArrayBuffer: ${error.message}`);
+}
 
 assert.throws(TypeError, function() {
   Atomics.wait(i64a, poisoned, poisoned, poisoned);
-});
+}, 'Atomics.wait(i64a, poisoned, poisoned, poisoned) on detached buffer throwes TypeError');
diff --git a/test/built-ins/Atomics/wait/bigint/out-of-range-index-throws.js b/test/built-ins/Atomics/wait/bigint/out-of-range-index-throws.js
index d192847026..d8a6b420a1 100644
--- a/test/built-ins/Atomics/wait/bigint/out-of-range-index-throws.js
+++ b/test/built-ins/Atomics/wait/bigint/out-of-range-index-throws.js
@@ -22,7 +22,7 @@ const i64a = new BigInt64Array(
 
 const poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
diff --git a/test/built-ins/Atomics/wait/bigint/value-not-equal.js b/test/built-ins/Atomics/wait/bigint/value-not-equal.js
index b6e07e27e2..6ed7eaa773 100644
--- a/test/built-ins/Atomics/wait/bigint/value-not-equal.js
+++ b/test/built-ins/Atomics/wait/bigint/value-not-equal.js
@@ -14,22 +14,15 @@ info: |
     a.Perform LeaveCriticalSection(WL).
     b. Return the String "not-equal".
 
+includes: [atomicsHelper.js]
 features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 ---*/
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
 var value = 42;
 
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
-    var i64a = new BigInt64Array(sab);
+    const i64a = new BigInt64Array(sab);
 
     $262.agent.report(Atomics.store(i64a, 0, ${value}));
     $262.agent.report(Atomics.wait(i64a, 0, 0));
diff --git a/test/built-ins/Atomics/wait/bigint/waiterlist-block-indexedposition-wake.js b/test/built-ins/Atomics/wait/bigint/waiterlist-block-indexedposition-wake.js
index 8d4e994d78..bedd9f0b28 100644
--- a/test/built-ins/Atomics/wait/bigint/waiterlist-block-indexedposition-wake.js
+++ b/test/built-ins/Atomics/wait/bigint/waiterlist-block-indexedposition-wake.js
@@ -18,19 +18,13 @@ info: |
   ...
   4. Return the WaiterList that is referenced by the pair (block, i).
 
+includes: [atomicsHelper.js]
 features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 ---*/
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
 
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
-    var i64a = new BigInt64Array(sab);
+    const i64a = new BigInt64Array(sab);
 
     // Wait on index 0
     Atomics.wait(i64a, 0, 0, 200);
@@ -41,7 +35,7 @@ $262.agent.start(`
 
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
-    var i64a = new BigInt64Array(sab);
+    const i64a = new BigInt64Array(sab);
 
     // Wait on index 2
     Atomics.wait(i64a, 2, 0, 200);
@@ -59,9 +53,9 @@ $262.agent.sleep(10);
 
 // Wake index 2
 Atomics.wake(i64a, 2, 1);
-assert.sameValue(getReport(), "2");
+assert.sameValue(getReport(), '2');
 
 // Wake index 0
-Atomics.wake(i64a, 2, 1);
-assert.sameValue(getReport(), "0");
+Atomics.wake(i64a, 0, 1);
+assert.sameValue(getReport(), '0');
 
diff --git a/test/built-ins/Atomics/wait/bigint/waiterlist-order-of-operations-is-fifo.js b/test/built-ins/Atomics/wait/bigint/waiterlist-order-of-operations-is-fifo.js
index ae7b4fa1ff..948eac8ce3 100644
--- a/test/built-ins/Atomics/wait/bigint/waiterlist-order-of-operations-is-fifo.js
+++ b/test/built-ins/Atomics/wait/bigint/waiterlist-order-of-operations-is-fifo.js
@@ -12,78 +12,66 @@ info: |
     ...
     3.Add W to the end of the list of waiters in WL.
 
+includes: [atomicsHelper.js]
 features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 ---*/
-
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
-var agent1 = '1';
-var agent2 = '2';
-var agent3 = '3';
+const agent1 = '1';
+const agent2 = '2';
+const agent3 = '3';
 
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i64a = new BigInt64Array(sab);
-
-  $262.agent.report(${agent1});
-  Atomics.wait(i64a, 0, 0);
-  $262.agent.report(${agent1});
-
-  $262.agent.leaving();
-})
+  $262.agent.receiveBroadcast(function(sab) {
+    const i64a = new BigInt64Array(sab);
+
+    $262.agent.report(${agent1});
+    $262.agent.report(Atomics.wait(i64a, 1, 0));
+    $262.agent.report(${agent1});
+    $262.agent.leaving();
+  });
 `);
 
-$262.agent.start(
-  `
-$262.agent.receiveBroadcast(function(sab) {
-  var i64a = new BigInt64Array(sab);
-
-  $262.agent.report(${agent2});
-
-  Atomics.wait(i64a, 0, 0);
-  $262.agent.report(${agent2});
-
-  $262.agent.leaving();
-})
+$262.agent.start(`
+  $262.agent.receiveBroadcast(function(sab) {
+    const i64a = new BigInt64Array(sab);
+
+    $262.agent.report(${agent2});
+    $262.agent.report(Atomics.wait(i64a, 2, 0));
+    $262.agent.report(${agent2});
+    $262.agent.leaving();
+  });
 `);
 
-$262.agent.start(
-  `
-$262.agent.receiveBroadcast(function(sab) {
-  var i64a = new BigInt64Array(sab);
-
-  $262.agent.report(${agent3});
-
-  Atomics.wait(i64a, 0, 0);
-  $262.agent.report(${agent3});
-
-  $262.agent.leaving();
-})
+$262.agent.start(`
+  $262.agent.receiveBroadcast(function(sab) {
+    const i64a = new BigInt64Array(sab);
+
+    $262.agent.report(${agent3});
+    $262.agent.report(Atomics.wait(i64a, 3, 0));
+    $262.agent.report(${agent3});
+    $262.agent.leaving();
+  });
 `);
 
 
-var i64a = new BigInt64Array(new SharedArrayBuffer(4));
+const i64a = new BigInt64Array(
+  new SharedArrayBuffer(4 * BigInt64Array.BYTES_PER_ELEMENT)
+);
 
 $262.agent.broadcast(i64a.buffer);
+$262.agent.sleep(500);
 
-var orderWhichAgentsWereStarted = getReport() + getReport() + getReport(); // can be started in any order
-
-assert.sameValue(Atomics.wake(i64a, 0, 1), 1);
-
-var orderAgentsWereWoken = getReport();
-
-assert.sameValue(Atomics.wake(i64a, 0, 1), 1);
-
-orderAgentsWereWoken += getReport();
+// Agents may be started in any order...
+const started = [getReport(), getReport(), getReport()];
 
-assert.sameValue(Atomics.wake(i64a, 0, 1), 1);
+// Agents must wake in the order they waited
+assert.sameValue(Atomics.wake(i64a, 1, 1), 1);
+assert.sameValue(getReport(), 'ok');
+assert.sameValue(getReport(), started[0]);
 
-orderAgentsWereWoken += getReport();
+assert.sameValue(Atomics.wake(i64a, 2, 1), 1);
+assert.sameValue(getReport(), 'ok');
+assert.sameValue(getReport(), started[1]);
 
-assert.sameValue(orderWhichAgentsWereStarted, orderAgentsWereWoken);  // agents should wake in the same order as they were started FIFO
+assert.sameValue(Atomics.wake(i64a, 3, 1), 1);
+assert.sameValue(getReport(), 'ok');
+assert.sameValue(getReport(), started[2]);
diff --git a/test/built-ins/Atomics/wait/bigint/was-woken-before-timeout.js b/test/built-ins/Atomics/wait/bigint/was-woken-before-timeout.js
index fd452d1bd8..0b975788eb 100644
--- a/test/built-ins/Atomics/wait/bigint/was-woken-before-timeout.js
+++ b/test/built-ins/Atomics/wait/bigint/was-woken-before-timeout.js
@@ -18,38 +18,39 @@ info: |
 
           If value is undefined, then
           Let index be 0.
+includes: [atomicsHelper.js]
 features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 ---*/
 
 var sleeping = 10;
 var timeout = 20000;
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    sleeping += 10;
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i64a = new BigInt64Array(sab);
-  $262.agent.report(Atomics.wait(i64a, 0, 0, ${timeout}));
-  $262.agent.leaving();
-});
+  $262.agent.receiveBroadcast(function(sab) {
+    const i64a = new BigInt64Array(sab);
+    const before = $262.agent.monotonicNow();
+    const unpark = Atomics.wait(i64a, 0, 0, ${timeout});
+    $262.agent.report($262.agent.monotonicNow() - before);
+    $262.agent.report(unpark);
+    $262.agent.leaving();
+  });
 `);
 
-var sab = new SharedArrayBuffer(4);
-var i64a = new BigInt64Array(sab);
-
+const i64a = new BigInt64Array(
+  new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT)
+);
 
 $262.agent.broadcast(i64a.buffer);
 $262.agent.sleep(sleeping);
 
 assert.sameValue(Atomics.wake(i64a, 0), 1);
 
-assert.sameValue(getReport(), "ok");
-assert(sleeping < timeout, "this test assumes it won't last for more than 20 seconds");
+const lapse = getReport();
+
+assert(
+  sleeping + lapse < timeout,
+  `${sleeping + lapse} should be less than ${timeout}`
+);
+assert.sameValue(getReport(), 'ok');
+
 
diff --git a/test/built-ins/Atomics/wait/bigint/was-woken.js b/test/built-ins/Atomics/wait/bigint/was-woken.js
deleted file mode 100644
index eedac503fb..0000000000
--- a/test/built-ins/Atomics/wait/bigint/was-woken.js
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (C) 2018 Rick Waldron. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-atomics.wait
-description: >
-  Test that Atomics.wait returns the right result when it was awoken.
-features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
----*/
-
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
-$262.agent.start(`
-$262.agent.receiveBroadcast(function(sab, id) {
-  var i64a = new BigInt64Array(sab);
-  $262.agent.report(Atomics.wait(i64a, 0, 0)); // No timeout => Infinity
-  $262.agent.leaving();
-});
-`);
-
-var i64a = new BigInt64Array(new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT));
-
-$262.agent.broadcast(i64a.buffer);
-$262.agent.sleep(50); // Give the agent a chance to wait
-Atomics.wake(i64a, 0);
-assert.sameValue(getReport(), "ok");
diff --git a/test/built-ins/Atomics/wait/cannot-suspend-throws.js b/test/built-ins/Atomics/wait/cannot-suspend-throws.js
index dc34bde85a..d453b5ecda 100644
--- a/test/built-ins/Atomics/wait/cannot-suspend-throws.js
+++ b/test/built-ins/Atomics/wait/cannot-suspend-throws.js
@@ -18,8 +18,9 @@ features: [Atomics, SharedArrayBuffer, TypedArray]
 flags: [CanBlockIsFalse]
 ---*/
 
-var buffer = new SharedArrayBuffer(4);
-var i32a = new Int32Array(buffer);
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
 assert.throws(TypeError, function() {
   Atomics.wait(i32a, 0, 0, 0);
diff --git a/test/built-ins/Atomics/wait/did-timeout.js b/test/built-ins/Atomics/wait/did-timeout.js
deleted file mode 100644
index c3fe8a8270..0000000000
--- a/test/built-ins/Atomics/wait/did-timeout.js
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (C) 2017 Mozilla Corporation.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-atomics.wait
-description: >
-  Test that Atomics.wait returns the right result when it timed out and that
-  the time to time out is reasonable.
-  info: |
-    17. Let awoken be Suspend(WL, W, t).
-    18. If awoken is true, then
-      a. Assert: W is not on the list of waiters in WL.
-    19. Else,
-      a.Perform RemoveWaiter(WL, W).
-includes: [atomicsHelper.js]
-features: [Atomics, SharedArrayBuffer, TypedArray]
----*/
-
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
-$262.agent.start(`
-$262.agent.receiveBroadcast(function(sab, id) {
-  var i32a = new Int32Array(sab);
-  var before = $262.agent.monotonicNow();
-  $262.agent.report(Atomics.wait(i32a, 0, 0, 500)); // Timeout 500ms
-  $262.agent.report($262.agent.monotonicNow() - before); // Actual time can be more than 500ms
-  $262.agent.leaving();
-});
-`);
-
-var i32a = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
-
-$262.agent.broadcast(i32a.buffer);
-assert.sameValue(getReport(), "timed-out");
-assert.sameValue((getReport() | 0) >= 500 - $ATOMICS_MAX_TIME_EPSILON, true);
-
diff --git a/test/built-ins/Atomics/wait/false-for-timeout-agent.js b/test/built-ins/Atomics/wait/false-for-timeout-agent.js
index 3322d669b7..609f5657b9 100644
--- a/test/built-ins/Atomics/wait/false-for-timeout-agent.js
+++ b/test/built-ins/Atomics/wait/false-for-timeout-agent.js
@@ -12,40 +12,32 @@ info: |
 
     Boolean -> If argument is true, return 1. If argument is false, return +0.
 
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
-includes: [ atomicsHelper.js ]
 ---*/
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
 $262.agent.start(`
-var valueOf = {
-  valueOf: function() {
-    return false;
-  }
-};
-
-var toPrimitive = {
-  [Symbol.toPrimitive]: function() {
-    return false;
-  }
-};
-
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  var before = $262.agent.monotonicNow();
-  $262.agent.report(Atomics.wait(i32a, 0, 0, false));
-  $262.agent.report(Atomics.wait(i32a, 0, 0, valueOf));
-  $262.agent.report(Atomics.wait(i32a, 0, 0, toPrimitive));
-  $262.agent.report($262.agent.monotonicNow() - before);
-  $262.agent.leaving();
-});
+  const valueOf = {
+    valueOf: function() {
+      return false;
+    }
+  };
+
+  const toPrimitive = {
+    [Symbol.toPrimitive]: function() {
+      return false;
+    }
+  };
+
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    const before = $262.agent.monotonicNow();
+    $262.agent.report(Atomics.wait(i32a, 0, 0, false));
+    $262.agent.report(Atomics.wait(i32a, 0, 0, valueOf));
+    $262.agent.report(Atomics.wait(i32a, 0, 0, toPrimitive));
+    $262.agent.report($262.agent.monotonicNow() - before);
+    $262.agent.leaving();
+  });
 `);
 
 const i32a = new Int32Array(
diff --git a/test/built-ins/Atomics/wait/false-for-timeout.js b/test/built-ins/Atomics/wait/false-for-timeout.js
index 86463f3d61..fca789f8c3 100644
--- a/test/built-ins/Atomics/wait/false-for-timeout.js
+++ b/test/built-ins/Atomics/wait/false-for-timeout.js
@@ -32,7 +32,7 @@ const toPrimitive = {
   }
 };
 
-assert.sameValue(Atomics.wait(i32a, 0, 0, false), "timed-out");
-assert.sameValue(Atomics.wait(i32a, 0, 0, valueOf), "timed-out");
-assert.sameValue(Atomics.wait(i32a, 0, 0, toPrimitive), "timed-out");
+assert.sameValue(Atomics.wait(i32a, 0, 0, false), 'timed-out');
+assert.sameValue(Atomics.wait(i32a, 0, 0, valueOf), 'timed-out');
+assert.sameValue(Atomics.wait(i32a, 0, 0, toPrimitive), 'timed-out');
 
diff --git a/test/built-ins/Atomics/wait/good-views.js b/test/built-ins/Atomics/wait/good-views.js
index efbaa86950..9b6b253de8 100644
--- a/test/built-ins/Atomics/wait/good-views.js
+++ b/test/built-ins/Atomics/wait/good-views.js
@@ -6,6 +6,7 @@ esid: sec-atomics.wait
 description: >
   Test Atomics.wait on arrays that allow atomic operations,
   in an Agent that is allowed to wait.
+includes: [atomicsHelper.js]
 features: [Atomics]
 ---*/
 
@@ -13,47 +14,40 @@ features: [Atomics]
 // even in the shell.
 
 $262.agent.start(`
-var sab = new SharedArrayBuffer(1024);
-var ab = new ArrayBuffer(16);
-
-var good_indices = [ (view) => 0/-1, // -0
-                     (view) => '-0',
-                     (view) => view.length - 1,
-                     (view) => ({ valueOf: () => 0 }),
-                     (view) => ({ toString: () => '0', valueOf: false }) // non-callable valueOf triggers invocation of toString
-                   ];
-
-var view = new Int32Array(sab, 32, 20);
-
-view[0] = 0;
-$262.agent.report("A " + Atomics.wait(view, 0, 0, 0))
-$262.agent.report("B " + Atomics.wait(view, 0, 37, 0));
-
-// In-bounds boundary cases for indexing
-for ( let IdxGen of good_indices ) {
-    let Idx = IdxGen(view);
-    view.fill(0);
-    // Atomics.store() computes an index from Idx in the same way as other
-    // Atomics operations, not quite like view[Idx].
-    Atomics.store(view, Idx, 37);
-    $262.agent.report("C " + Atomics.wait(view, Idx, 0));
-}
+  var sab = new SharedArrayBuffer(1024);
+  var ab = new ArrayBuffer(16);
+
+  var good_indices = [ (view) => 0/-1, // -0
+                       (view) => '-0',
+                       (view) => view.length - 1,
+                       (view) => ({ valueOf: () => 0 }),
+                       (view) => ({ toString: () => '0', valueOf: false }) // non-callable valueOf triggers invocation of toString
+                     ];
+
+  var view = new Int32Array(sab, 32, 20);
+
+  view[0] = 0;
+  $262.agent.report("A " + Atomics.wait(view, 0, 0, 0))
+  $262.agent.report("B " + Atomics.wait(view, 0, 37, 0));
+
+  // In-bounds boundary cases for indexing
+  for ( let IdxGen of good_indices ) {
+      let Idx = IdxGen(view);
+      view.fill(0);
+      // Atomics.store() computes an index from Idx in the same way as other
+      // Atomics operations, not quite like view[Idx].
+      Atomics.store(view, Idx, 37);
+      $262.agent.report("C " + Atomics.wait(view, Idx, 0));
+  }
 
-$262.agent.report("done");
-$262.agent.leaving();
+  $262.agent.report("done");
+  $262.agent.leaving();
 `);
 
-assert.sameValue(getReport(), "A timed-out");
-assert.sameValue(getReport(), "B not-equal"); // Even with zero timeout
+assert.sameValue(getReport(), 'A timed-out');
+assert.sameValue(getReport(), 'B not-equal'); // Even with zero timeout
+
 var r;
 while ((r = getReport()) != "done") {
   assert.sameValue(r, "C not-equal");
 }
-
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
diff --git a/test/built-ins/Atomics/wait/nan-for-timeout.js b/test/built-ins/Atomics/wait/nan-for-timeout.js
index 3a7c2756d4..fd181765bb 100644
--- a/test/built-ins/Atomics/wait/nan-for-timeout.js
+++ b/test/built-ins/Atomics/wait/nan-for-timeout.js
@@ -13,26 +13,21 @@ info: |
     Undefined    Return NaN.
   5.If q is NaN, let t be +∞, else let t be max(q, 0)
 
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  $262.agent.report(Atomics.wait(i32a, 0, 0, NaN));  // NaN => +Infinity
-  $262.agent.leaving();
-});
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    $262.agent.report(Atomics.wait(i32a, 0, 0, NaN));  // NaN => +Infinity
+    $262.agent.leaving();
+  });
 `);
 
-var i32a = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(500); // Ample time
diff --git a/test/built-ins/Atomics/wait/negative-index-throws.js b/test/built-ins/Atomics/wait/negative-index-throws.js
index 6b72e73417..c268560562 100644
--- a/test/built-ins/Atomics/wait/negative-index-throws.js
+++ b/test/built-ins/Atomics/wait/negative-index-throws.js
@@ -13,14 +13,18 @@ info: |
       2.Let accessIndex be ? ToIndex(requestIndex).
         ...
         2.b If integerIndex < 0, throw a RangeError exception
+
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
-var sab = new SharedArrayBuffer(1024);
-var i32a = new Int32Array(sab);
-var poisoned = {
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
+
+const poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
diff --git a/test/built-ins/Atomics/wait/negative-timeout-agent.js b/test/built-ins/Atomics/wait/negative-timeout-agent.js
index 92199fad5a..c8ca7e5d7f 100644
--- a/test/built-ins/Atomics/wait/negative-timeout-agent.js
+++ b/test/built-ins/Atomics/wait/negative-timeout-agent.js
@@ -5,28 +5,24 @@
 esid: sec-atomics.wait
 description: >
   Test that Atomics.wait times out with a negative timeout
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab, id) {
-  var ia = new Int32Array(sab);
-  $262.agent.report(Atomics.wait(ia, 0, 0, -5)); // -5 => 0
-  $262.agent.leaving();
-})
+  $262.agent.receiveBroadcast(function(sab, id) {
+    var i32a = new Int32Array(sab);
+    $262.agent.report(Atomics.wait(i32a, 0, 0, -5)); // -5 => 0
+    $262.agent.leaving();
+  });
 `);
 
-var buffer = new SharedArrayBuffer(1024);
-var i32a = new Int32Array(buffer);
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
 $262.agent.broadcast(i32a.buffer);
-assert.sameValue(getReport(), "timed-out");
+$262.agent.sleep(100);
+
+assert.sameValue(getReport(), 'timed-out');
 assert.sameValue(Atomics.wake(i32a, 0), 0);
diff --git a/test/built-ins/Atomics/wait/negative-timeout.js b/test/built-ins/Atomics/wait/negative-timeout.js
index 019ca1db96..9fadae6779 100644
--- a/test/built-ins/Atomics/wait/negative-timeout.js
+++ b/test/built-ins/Atomics/wait/negative-timeout.js
@@ -9,7 +9,8 @@ features: [Atomics, SharedArrayBuffer, TypedArray]
 flags: [CanBlockIsFalse]
 ---*/
 
-var buffer = new SharedArrayBuffer(1024);
-var i32a = new Int32Array(buffer);
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
 assert.sameValue(Atomics.wait(i32a, 0, 0, -1), "timed-out");
diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-add.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-add.js
index 1e70eeecbe..33de28b41f 100644
--- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-add.js
+++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-add.js
@@ -5,15 +5,9 @@
 esid: sec-atomics.wait
 description: >
   Waiter does not spuriously wake on index which is subject to Add operation
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
 
 const TIMEOUT = 2000;
 const i32a = new Int32Array(
@@ -22,9 +16,9 @@ const i32a = new Int32Array(
 
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
-    var i32a = new Int32Array(sab);
-    var before = $262.agent.monotonicNow();
-    var unpark = Atomics.wait(i32a, 0, 0, ${TIMEOUT});
+    const i32a = new Int32Array(sab);
+    const before = $262.agent.monotonicNow();
+    const unpark = Atomics.wait(i32a, 0, 0, ${TIMEOUT});
     $262.agent.report($262.agent.monotonicNow() - before);
     $262.agent.report(unpark);
     $262.agent.leaving();
diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-and.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-and.js
index 345fe9a5b9..bda0a701fb 100644
--- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-and.js
+++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-and.js
@@ -5,15 +5,9 @@
 esid: sec-atomics.wait
 description: >
   Waiter does not spuriously wake on index which is subject to And operation
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
 
 const TIMEOUT = 2000;
 const i32a = new Int32Array(
diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-compareExchange.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-compareExchange.js
index 16aedd6aa1..5219c79acf 100644
--- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-compareExchange.js
+++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-compareExchange.js
@@ -5,15 +5,9 @@
 esid: sec-atomics.wait
 description: >
   Waiter does not spuriously wake on index which is subject to compareExchange operation
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
 
 const TIMEOUT = 2000;
 const i32a = new Int32Array(
diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-exchange.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-exchange.js
index f9d0aa3d29..c985129ff6 100644
--- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-exchange.js
+++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-exchange.js
@@ -5,15 +5,9 @@
 esid: sec-atomics.wait
 description: >
   Waiter does not spuriously wake on index which is subject to exchange operation
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
 
 const TIMEOUT = 2000;
 const i32a = new Int32Array(
diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-or.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-or.js
index 04c9f819af..64d3114a14 100644
--- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-or.js
+++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-or.js
@@ -5,15 +5,9 @@
 esid: sec-atomics.wait
 description: >
   Waiter does not spuriously wake on index which is subject to Or operation
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
 
 const TIMEOUT = 2000;
 const i32a = new Int32Array(
diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-store.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-store.js
index bc4e315847..bc59c6c571 100644
--- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-store.js
+++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-store.js
@@ -5,15 +5,9 @@
 esid: sec-atomics.wait
 description: >
   Waiter does not spuriously wake on index which is subject to Store operation
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
 
 const TIMEOUT = 2000;
 const i32a = new Int32Array(
diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-sub.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-sub.js
index 1de7591ad4..725dc57e35 100644
--- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-sub.js
+++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-sub.js
@@ -5,15 +5,9 @@
 esid: sec-atomics.wait
 description: >
   Waiter does not spuriously wake on index which is subject to Sub operation
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
 
 const TIMEOUT = 2000;
 const i32a = new Int32Array(
diff --git a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-xor.js b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-xor.js
index 10d3d58144..c79dad7938 100644
--- a/test/built-ins/Atomics/wait/no-spurious-wakeup-on-xor.js
+++ b/test/built-ins/Atomics/wait/no-spurious-wakeup-on-xor.js
@@ -5,15 +5,9 @@
 esid: sec-atomics.wait
 description: >
   Waiter does not spuriously wake on index which is subject to xor operation
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
 
 const TIMEOUT = 2000;
 const i32a = new Int32Array(
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 ea2ce1f1bf..b85963ef59 100644
--- a/test/built-ins/Atomics/wait/non-int32-typedarray-throws.js
+++ b/test/built-ins/Atomics/wait/non-int32-typedarray-throws.js
@@ -15,40 +15,64 @@ info: |
 features: [Atomics, Float32Array, Float64Array, Int8Array, TypedArray, Uint16Array, Uint8Array, Uint8ClampedArray]
 ---*/
 
-var poisoned = {
+const poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
 assert.throws(TypeError, function() {
-  Atomics.wait(new Float64Array(), poisoned, poisoned, poisoned);
+  const view = new Float64Array(
+    new SharedArrayBuffer(Float64Array.BYTES_PER_ELEMENT)
+  );
+  Atomics.wait(view, poisoned, poisoned, poisoned);
 }, 'Float64Array');
 
 assert.throws(TypeError, function() {
-  Atomics.wait(new Float32Array(), poisoned, poisoned, poisoned);
+  const view = new Float32Array(
+    new SharedArrayBuffer(Float32Array.BYTES_PER_ELEMENT)
+  );
+  Atomics.wait(view, poisoned, poisoned, poisoned);
 }, 'Float32Array');
 
 assert.throws(TypeError, function() {
-  Atomics.wait(new Int16Array(), poisoned, poisoned, poisoned);
+  const view = new Int16Array(
+    new SharedArrayBuffer(Int16Array.BYTES_PER_ELEMENT)
+  );
+  Atomics.wait(view, poisoned, poisoned, poisoned);
 }, 'Int16Array');
 
 assert.throws(TypeError, function() {
-  Atomics.wait(new Int8Array(), poisoned, poisoned, poisoned);
+  const view = new Int8Array(
+    new SharedArrayBuffer(Int8Array.BYTES_PER_ELEMENT)
+  );
+  Atomics.wait(view, poisoned, poisoned, poisoned);
 }, 'Int8Array');
 
 assert.throws(TypeError, function() {
-  Atomics.wait(new Uint32Array(),  poisoned, poisoned, poisoned);
+  const view = new Uint32Array(
+    new SharedArrayBuffer(Uint32Array.BYTES_PER_ELEMENT)
+  );
+  Atomics.wait(view, poisoned, poisoned, poisoned);
 }, 'Uint32Array');
 
 assert.throws(TypeError, function() {
-  Atomics.wait(new Uint16Array(), poisoned, poisoned, poisoned);
+  const view = new Uint16Array(
+    new SharedArrayBuffer(Uint16Array.BYTES_PER_ELEMENT)
+  );
+  Atomics.wait(view, poisoned, poisoned, poisoned);
 }, 'Uint16Array');
 
 assert.throws(TypeError, function() {
-  Atomics.wait(new Uint8Array(), poisoned, poisoned, poisoned);
+  const view = new Uint8Array(
+    new SharedArrayBuffer(Uint8Array.BYTES_PER_ELEMENT)
+  );
+  Atomics.wait(view, poisoned, poisoned, poisoned);
 }, 'Uint8Array');
 
 assert.throws(TypeError, function() {
-  Atomics.wait(new Uint8ClampedArray(), poisoned, poisoned, poisoned);
+  const view = new Uint8ClampedArray(
+    new SharedArrayBuffer(Uint8ClampedArray.BYTES_PER_ELEMENT)
+  );
+  Atomics.wait(view, poisoned, poisoned, poisoned);
 }, 'Uint8ClampedArray');
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 3db334f895..4e11f07287 100644
--- a/test/built-ins/Atomics/wait/non-shared-bufferdata-throws.js
+++ b/test/built-ins/Atomics/wait/non-shared-bufferdata-throws.js
@@ -15,10 +15,13 @@ info: |
 features: [ArrayBuffer, Atomics, TypedArray]
 ---*/
 
-var i32a = new Int32Array(new ArrayBuffer(4));
-var poisoned = {
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
+
+const poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
diff --git a/test/built-ins/Atomics/wait/not-a-typedarray-throws.js b/test/built-ins/Atomics/wait/not-a-typedarray-throws.js
index 0fc66993aa..108f235397 100644
--- a/test/built-ins/Atomics/wait/not-a-typedarray-throws.js
+++ b/test/built-ins/Atomics/wait/not-a-typedarray-throws.js
@@ -16,7 +16,7 @@ features: [Atomics]
 
 var poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
diff --git a/test/built-ins/Atomics/wait/not-an-object-throws.js b/test/built-ins/Atomics/wait/not-an-object-throws.js
index e60165ffed..bcd44c9a3a 100644
--- a/test/built-ins/Atomics/wait/not-an-object-throws.js
+++ b/test/built-ins/Atomics/wait/not-an-object-throws.js
@@ -15,7 +15,7 @@ features: [Atomics, Symbol]
 
 var poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
@@ -41,7 +41,7 @@ assert.throws(TypeError, function() {
 
 assert.throws(TypeError, function() {
   Atomics.wait(Number.NEGATIVE_INFINITY, poisoned, poisoned, poisoned);
-}, '-Infinity');
+}, 'Number.NEGATIVE_INFINITY');
 
 assert.throws(TypeError, function() {
   Atomics.wait(Symbol('***symbol***'), poisoned, poisoned, poisoned);
diff --git a/test/built-ins/Atomics/wait/null-bufferdata-throws.js b/test/built-ins/Atomics/wait/null-bufferdata-throws.js
index 511ba811ae..e9f5e0e752 100644
--- a/test/built-ins/Atomics/wait/null-bufferdata-throws.js
+++ b/test/built-ins/Atomics/wait/null-bufferdata-throws.js
@@ -16,14 +16,21 @@ includes: [detachArrayBuffer.js]
 features: [ArrayBuffer, Atomics, TypedArray]
 ---*/
 
-var i32a = new Int32Array(new ArrayBuffer(1024));
-var poisoned = {
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
+
+const poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
-$DETACHBUFFER(i32a.buffer); // Detaching a non-shared ArrayBuffer sets the [[ArrayBufferData]] value to null
+try {
+  $DETACHBUFFER(i64a.buffer); // Detaching a non-shared ArrayBuffer sets the [[ArrayBufferData]] value to null
+} catch (error) {
+  $ERROR(`An unexpected error occurred when detaching ArrayBuffer: ${error.message}`);
+}
 
 assert.throws(TypeError, function() {
   Atomics.wait(i32a, poisoned, poisoned, poisoned);
diff --git a/test/built-ins/Atomics/wait/null-for-timeout-agent.js b/test/built-ins/Atomics/wait/null-for-timeout-agent.js
index 64850f1c0e..b6b3bb9066 100644
--- a/test/built-ins/Atomics/wait/null-for-timeout-agent.js
+++ b/test/built-ins/Atomics/wait/null-for-timeout-agent.js
@@ -12,44 +12,37 @@ info: |
 
     Null -> Return +0.
 
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
-includes: [ atomicsHelper.js ]
 ---*/
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
-$262.agent.start(
-  `
-var valueOf = {
-  valueOf: function() {
-    return null;
-  }
-};
-
-var toPrimitive = {
-  [Symbol.toPrimitive]: function() {
-    return null;
-  }
-};
-
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  var before = $262.agent.monotonicNow();
-  $262.agent.report(Atomics.wait(i32a, 0, 0, null));
-  $262.agent.report(Atomics.wait(i32a, 0, 0, valueOf));
-  $262.agent.report(Atomics.wait(i32a, 0, 0, toPrimitive));
-  $262.agent.report($262.agent.monotonicNow() - before);
-  $262.agent.leaving();
-});
+$262.agent.start(`
+  const valueOf = {
+    valueOf: function() {
+      return null;
+    }
+  };
+
+  const toPrimitive = {
+    [Symbol.toPrimitive]: function() {
+      return null;
+    }
+  };
+
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    const before = $262.agent.monotonicNow();
+    $262.agent.report(Atomics.wait(i32a, 0, 0, null));
+    $262.agent.report(Atomics.wait(i32a, 0, 0, valueOf));
+    $262.agent.report(Atomics.wait(i32a, 0, 0, toPrimitive));
+    $262.agent.report($262.agent.monotonicNow() - before);
+    $262.agent.leaving();
+  });
 `);
 
-var i32a = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(150);
@@ -58,11 +51,11 @@ assert.sameValue(getReport(), 'timed-out');
 assert.sameValue(getReport(), 'timed-out');
 assert.sameValue(getReport(), 'timed-out');
 
-var timeDiffReport = getReport();
+const lapse = getReport();
 
-assert(timeDiffReport >= 0, 'timeout should be a min of 0ms');
+assert(lapse >= 0, 'timeout should be a min of 0ms');
 
-assert(timeDiffReport <= $ATOMICS_MAX_TIME_EPSILON, 'timeout should be a max of $ATOMICS_MAX_TIME_EPSILON');
+assert(lapse <= $ATOMICS_MAX_TIME_EPSILON, 'timeout should be a max of $ATOMICS_MAX_TIME_EPSILON');
 
 assert.sameValue(Atomics.wake(i32a, 0), 0);
 
diff --git a/test/built-ins/Atomics/wait/null-for-timeout.js b/test/built-ins/Atomics/wait/null-for-timeout.js
index 354d29cc42..8bae175c7d 100644
--- a/test/built-ins/Atomics/wait/null-for-timeout.js
+++ b/test/built-ins/Atomics/wait/null-for-timeout.js
@@ -16,16 +16,17 @@ features: [Atomics, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray]
 flags: [CanBlockIsFalse]
 ---*/
 
-var buffer = new SharedArrayBuffer(1024);
-var i32a = new Int32Array(buffer);
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
-var valueOf = {
+const valueOf = {
   valueOf: function() {
     return null;
   }
 };
 
-var toPrimitive = {
+const toPrimitive = {
   [Symbol.toPrimitive]: function() {
     return null;
   }
diff --git a/test/built-ins/Atomics/wait/object-for-timeout-agent.js b/test/built-ins/Atomics/wait/object-for-timeout-agent.js
index 11b7aee594..caac5dc689 100644
--- a/test/built-ins/Atomics/wait/object-for-timeout-agent.js
+++ b/test/built-ins/Atomics/wait/object-for-timeout-agent.js
@@ -12,51 +12,42 @@ info: |
 
     Null -> Return +0.
 
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
-includes: [ atomicsHelper.js ]
 ---*/
-
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
-$262.agent.start(
-  `
-var valueOf = {
-  valueOf: function() {
-    return 0;
-  }
-};
-
-var toString = {
-  toString: function() {
-    return "0";
-  }
-};
-
-var toPrimitive = {
-  [Symbol.toPrimitive]: function() {
-    return 0;
-  }
-};
-
-
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  var start = $262.agent.monotonicNow();
-  $262.agent.report(Atomics.wait(i32a, 0, 0, valueOf));
-  $262.agent.report(Atomics.wait(i32a, 0, 0, toString));
-  $262.agent.report(Atomics.wait(i32a, 0, 0, toPrimitive));
-  $262.agent.report($262.agent.monotonicNow() - start);
-  $262.agent.leaving();
-});
+$262.agent.start(`
+  const valueOf = {
+    valueOf: function() {
+      return 0;
+    }
+  };
+
+  const toString = {
+    toString: function() {
+      return "0";
+    }
+  };
+
+  const toPrimitive = {
+    [Symbol.toPrimitive]: function() {
+      return 0;
+    }
+  };
+
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    const before = $262.agent.monotonicNow();
+    $262.agent.report(Atomics.wait(i32a, 0, 0, valueOf));
+    $262.agent.report(Atomics.wait(i32a, 0, 0, toString));
+    $262.agent.report(Atomics.wait(i32a, 0, 0, toPrimitive));
+    $262.agent.report($262.agent.monotonicNow() - before);
+    $262.agent.leaving();
+  });
 `);
 
-var i32a = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(150);
@@ -65,11 +56,11 @@ assert.sameValue(getReport(), 'timed-out');
 assert.sameValue(getReport(), 'timed-out');
 assert.sameValue(getReport(), 'timed-out');
 
-var timeDiffReport = getReport();
+var lapse = getReport();
 
-assert(timeDiffReport >= 0, 'timeout should be a min of 0ms');
+assert(lapse >= 0, 'timeout should be a min of 0ms');
 
-assert(timeDiffReport <= $ATOMICS_MAX_TIME_EPSILON, 'timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON');
+assert(lapse <= $ATOMICS_MAX_TIME_EPSILON, 'timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON');
 
 assert.sameValue(Atomics.wake(i32a, 0), 0);
 
diff --git a/test/built-ins/Atomics/wait/object-for-timeout.js b/test/built-ins/Atomics/wait/object-for-timeout.js
index f2374ce096..43af65dae2 100644
--- a/test/built-ins/Atomics/wait/object-for-timeout.js
+++ b/test/built-ins/Atomics/wait/object-for-timeout.js
@@ -15,31 +15,33 @@ info: |
       Let primValue be ? ToPrimitive(argument, hint Number).
       Return ? ToNumber(primValue).
 
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray]
 flags: [CanBlockIsFalse]
 ---*/
 
-var buffer = new SharedArrayBuffer(1024);
-var i32a = new Int32Array(buffer);
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
-var valueOf = {
+const valueOf = {
   valueOf: function() {
     return 0;
   }
 };
 
-var toString = {
+const toString = {
   toString: function() {
     return "0";
   }
 };
 
-var toPrimitive = {
+const toPrimitive = {
   [Symbol.toPrimitive]: function() {
     return 0;
   }
 };
 
-assert.sameValue(Atomics.wait(i32a, 0, 0, valueOf), "timed-out");
-assert.sameValue(Atomics.wait(i32a, 0, 0, toString), "timed-out");
-assert.sameValue(Atomics.wait(i32a, 0, 0, toPrimitive), "timed-out");
+assert.sameValue(Atomics.wait(i32a, 0, 0, valueOf), 'timed-out');
+assert.sameValue(Atomics.wait(i32a, 0, 0, toString), 'timed-out');
+assert.sameValue(Atomics.wait(i32a, 0, 0, toPrimitive), 'timed-out');
diff --git a/test/built-ins/Atomics/wait/out-of-range-index-throws.js b/test/built-ins/Atomics/wait/out-of-range-index-throws.js
index 7d467a218f..fc09d1ae7d 100644
--- a/test/built-ins/Atomics/wait/out-of-range-index-throws.js
+++ b/test/built-ins/Atomics/wait/out-of-range-index-throws.js
@@ -16,11 +16,13 @@ info: |
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
-var i32a = new Int32Array(new SharedArrayBuffer(4));
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
-var poisoned = {
+const poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
diff --git a/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws-agent.js b/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws-agent.js
index f4a068881f..2470216793 100644
--- a/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws-agent.js
+++ b/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws-agent.js
@@ -12,63 +12,56 @@ info: |
 
     Null -> Return +0.
 
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
-includes: [ atomicsHelper.js ]
 ---*/
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
-$262.agent.start(
-  `
-var poisonedValueOf = {
-  valueOf: function() {
-    throw new Error("should not evaluate this code");
-  }
-};
-
-var poisonedToPrimitive = {
-  [Symbol.toPrimitive]: function() {
-    throw new Error("passing a poisoned object using @@ToPrimitive");
-  }
-};
-
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  var start = $262.agent.monotonicNow();
-  try {
-    Atomics.wait(i32a, 0, 0, poisonedValueOf);
-  } catch (error) {
-    $262.agent.report("poisonedValueOf");
-  }
-  try {
-    Atomics.wait(i32a, 0, 0, poisonedToPrimitive);
-  } catch (error) {
-    $262.agent.report("poisonedToPrimitive");
-  }
-  $262.agent.report($262.agent.monotonicNow() - start);
-  $262.agent.leaving();
-});
+$262.agent.start(`
+  const poisonedValueOf = {
+    valueOf: function() {
+      throw new Error("should not evaluate this code");
+    }
+  };
+
+  const poisonedToPrimitive = {
+    [Symbol.toPrimitive]: function() {
+      throw new Error("passing a poisoned object using @@ToPrimitive");
+    }
+  };
+
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    const start = $262.agent.monotonicNow();
+    try {
+      Atomics.wait(i32a, 0, 0, poisonedValueOf);
+    } catch (error) {
+      $262.agent.report("poisonedValueOf");
+    }
+    try {
+      Atomics.wait(i32a, 0, 0, poisonedToPrimitive);
+    } catch (error) {
+      $262.agent.report("poisonedToPrimitive");
+    }
+    $262.agent.report($262.agent.monotonicNow() - start);
+    $262.agent.leaving();
+  });
 `);
 
-var i32a = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(150);
 
-assert.sameValue(getReport(), "poisonedValueOf");
-assert.sameValue(getReport(), "poisonedToPrimitive");
+assert.sameValue(getReport(), 'poisonedValueOf');
+assert.sameValue(getReport(), 'poisonedToPrimitive');
 
-var timeDiffReport = getReport();
+const lapse = getReport();
 
-assert(timeDiffReport >= 0, "timeout should be a min of 0ms");
+assert(lapse >= 0, 'timeout should be a min of 0ms');
 
-assert(timeDiffReport <= $ATOMICS_MAX_TIME_EPSILON, "timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON");
+assert(lapse <= $ATOMICS_MAX_TIME_EPSILON, 'timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON');
 
 assert.sameValue(Atomics.wake(i32a, 0), 0);
 
diff --git a/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws.js b/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws.js
index 70c5ef495c..73bd54b0ef 100644
--- a/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws.js
+++ b/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws.js
@@ -18,16 +18,17 @@ info: |
 features: [Atomics, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray]
 ---*/
 
-var buffer = new SharedArrayBuffer(1024);
-var i32a = new Int32Array(buffer);
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
-var poisonedValueOf = {
+const poisonedValueOf = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
-var poisonedToPrimitive = {
+const poisonedToPrimitive = {
   [Symbol.toPrimitive]: function() {
     throw new Test262Error("passing a poisoned object using @@ToPrimitive");
   }
diff --git a/test/built-ins/Atomics/wait/symbol-for-index-throws-agent.js b/test/built-ins/Atomics/wait/symbol-for-index-throws-agent.js
index 997ad79246..0fff08b9c4 100644
--- a/test/built-ins/Atomics/wait/symbol-for-index-throws-agent.js
+++ b/test/built-ins/Atomics/wait/symbol-for-index-throws-agent.js
@@ -25,51 +25,44 @@ info: |
 
     Symbol --> Throw a TypeError exception.
 
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray]
-includes: [ atomicsHelper.js ]
 ---*/
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
-$262.agent.start(
-  `
-var poisonedValueOf = {
-  valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
-  }
-};
-
-var poisonedToPrimitive = {
-  [Symbol.toPrimitive]: function() {
-    throw new Test262Error("passing a poisoned object using @@ToPrimitive");
-  }
-};
-
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  var start = $262.agent.monotonicNow();
-  try {
-    Atomics.wait(i32a, Symbol("1"), poisonedValueOf, poisonedValueOf);
-  } catch (error) {
-    $262.agent.report('Symbol("1")');
-  }
-  try {
-    Atomics.wait(i32a, Symbol("2"), poisonedToPrimitive, poisonedToPrimitive);
-  } catch (error) {
-    $262.agent.report('Symbol("2")');
-  }
-  $262.agent.report($262.agent.monotonicNow() - start);
-  $262.agent.leaving();
-});
+$262.agent.start(`
+  const poisonedValueOf = {
+    valueOf: function() {
+      throw new Test262Error('should not evaluate this code');
+    }
+  };
+
+  const poisonedToPrimitive = {
+    [Symbol.toPrimitive]: function() {
+      throw new Test262Error("passing a poisoned object using @@ToPrimitive");
+    }
+  };
+
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    const start = $262.agent.monotonicNow();
+    try {
+      Atomics.wait(i32a, Symbol("1"), poisonedValueOf, poisonedValueOf);
+    } catch (error) {
+      $262.agent.report('Symbol("1")');
+    }
+    try {
+      Atomics.wait(i32a, Symbol("2"), poisonedToPrimitive, poisonedToPrimitive);
+    } catch (error) {
+      $262.agent.report('Symbol("2")');
+    }
+    $262.agent.report($262.agent.monotonicNow() - start);
+    $262.agent.leaving();
+  });
 `);
 
-var i32a = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(150);
@@ -77,10 +70,10 @@ $262.agent.sleep(150);
 assert.sameValue(getReport(), 'Symbol("1")');
 assert.sameValue(getReport(), 'Symbol("2")');
 
-var timeDiffReport = getReport();
+const lapse = getReport();
 
-assert(timeDiffReport >= 0, "timeout should be a min of 0ms");
-assert(timeDiffReport <= $ATOMICS_MAX_TIME_EPSILON, "timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON");
+assert(lapse >= 0, 'timeout should be a min of 0ms');
+assert(lapse <= $ATOMICS_MAX_TIME_EPSILON, 'timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON');
 
 assert.sameValue(Atomics.wake(i32a, 0), 0);
 
diff --git a/test/built-ins/Atomics/wait/symbol-for-index-throws.js b/test/built-ins/Atomics/wait/symbol-for-index-throws.js
index 8b630f4c77..a84f54ac6c 100644
--- a/test/built-ins/Atomics/wait/symbol-for-index-throws.js
+++ b/test/built-ins/Atomics/wait/symbol-for-index-throws.js
@@ -28,18 +28,19 @@ info: |
 features: [Atomics, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray]
 ---*/
 
-var buffer = new SharedArrayBuffer(1024);
-var i32a = new Int32Array(buffer);
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
-var poisonedValueOf = {
+const poisonedValueOf = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
-var poisonedToPrimitive = {
+const poisonedToPrimitive = {
   [Symbol.toPrimitive]: function() {
-    throw new Test262Error("passing a poisoned object using @@ToPrimitive");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
@@ -52,9 +53,9 @@ assert.throws(Test262Error, function() {
 });
 
 assert.throws(TypeError, function() {
-  Atomics.wait(i32a, Symbol("foo"), poisonedValueOf, poisonedValueOf);
+  Atomics.wait(i32a, Symbol('foo'), poisonedValueOf, poisonedValueOf);
 });
 
 assert.throws(TypeError, function() {
-  Atomics.wait(i32a, Symbol("foo"), poisonedToPrimitive, poisonedToPrimitive);
+  Atomics.wait(i32a, Symbol('foo'), poisonedToPrimitive, poisonedToPrimitive);
 });
diff --git a/test/built-ins/Atomics/wait/symbol-for-timeout-throws-agent.js b/test/built-ins/Atomics/wait/symbol-for-timeout-throws-agent.js
index 9c23685c7c..20a75c9e64 100644
--- a/test/built-ins/Atomics/wait/symbol-for-timeout-throws-agent.js
+++ b/test/built-ins/Atomics/wait/symbol-for-timeout-throws-agent.js
@@ -12,37 +12,34 @@ info: |
 
     Symbol --> Throw a TypeError exception.
 
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray]
-includes: [ atomicsHelper.js ]
 ---*/
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  var start = $262.agent.monotonicNow();
-  try {
-    Atomics.wait(i32a, 0, 0, Symbol("1"));
-  } catch (error) {
-    $262.agent.report('Symbol("1")');
-  }
-  try {
-    Atomics.wait(i32a, 0, 0, Symbol("2"));
-  } catch (error) {
-    $262.agent.report('Symbol("2")');
-  }
-  $262.agent.report($262.agent.monotonicNow() - start);
-  $262.agent.leaving();
-});
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    const start = $262.agent.monotonicNow();
+    try {
+      Atomics.wait(i32a, 0, 0, Symbol("1"));
+    } catch (error) {
+      $262.agent.report('Symbol("1")');
+    }
+    try {
+      Atomics.wait(i32a, 0, 0, Symbol("2"));
+    } catch (error) {
+      $262.agent.report('Symbol("2")');
+    }
+    $262.agent.report($262.agent.monotonicNow() - start);
+    $262.agent.leaving();
+  });
 `);
 
-var i32a = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
+
+
+const i32a = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
 
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(150);
@@ -50,9 +47,9 @@ $262.agent.sleep(150);
 assert.sameValue(getReport(), 'Symbol("1")');
 assert.sameValue(getReport(), 'Symbol("2")');
 
-var timeDiffReport = getReport();
+const lapse = getReport();
 
-assert(timeDiffReport >= 0, "timeout should be a min of 0ms");
-assert(timeDiffReport <= $ATOMICS_MAX_TIME_EPSILON, "timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON");
+assert(lapse >= 0, 'timeout should be a min of 0ms');
+assert(lapse <= $ATOMICS_MAX_TIME_EPSILON, 'timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON');
 
 assert.sameValue(Atomics.wake(i32a, 0), 0);
diff --git a/test/built-ins/Atomics/wait/symbol-for-timeout-throws.js b/test/built-ins/Atomics/wait/symbol-for-timeout-throws.js
index b0cc8a7c31..6030e0fd13 100644
--- a/test/built-ins/Atomics/wait/symbol-for-timeout-throws.js
+++ b/test/built-ins/Atomics/wait/symbol-for-timeout-throws.js
@@ -20,13 +20,13 @@ var i32a = new Int32Array(buffer);
 
 var poisonedValueOf = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
 var poisonedToPrimitive = {
   [Symbol.toPrimitive]: function() {
-    throw new Test262Error("passing a poisoned object using @@ToPrimitive");
+    throw new Test262Error('passing a poisoned object using @@ToPrimitive');
   }
 };
 
diff --git a/test/built-ins/Atomics/wait/symbol-for-value-throws-agent.js b/test/built-ins/Atomics/wait/symbol-for-value-throws-agent.js
index b3f582db00..02b31acb57 100644
--- a/test/built-ins/Atomics/wait/symbol-for-value-throws-agent.js
+++ b/test/built-ins/Atomics/wait/symbol-for-value-throws-agent.js
@@ -16,50 +16,44 @@ info: |
 
     Symbol --> Throw a TypeError exception.
 
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray]
-includes: [ atomicsHelper.js ]
 ---*/
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
 $262.agent.start(`
-var poisonedValueOf = {
-  valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
-  }
-};
-
-var poisonedToPrimitive = {
-  [Symbol.toPrimitive]: function() {
-    throw new Test262Error("passing a poisoned object using @@ToPrimitive");
-  }
-};
-
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  var start = $262.agent.monotonicNow();
-  try {
-    Atomics.wait(i32a, 0, Symbol("1"), poisonedValueOf);
-  } catch (error) {
-    $262.agent.report('Symbol("1")');
-  }
-  try {
-    Atomics.wait(i32a, 0, Symbol("2"), poisonedToPrimitive);
-  } catch (error) {
-    $262.agent.report('Symbol("2")');
-  }
-  $262.agent.report($262.agent.monotonicNow() - start);
-  $262.agent.leaving();
-});
+  const poisonedValueOf = {
+    valueOf: function() {
+      throw new Test262Error('should not evaluate this code');
+    }
+  };
+
+  const poisonedToPrimitive = {
+    [Symbol.toPrimitive]: function() {
+      throw new Test262Error("passing a poisoned object using @@ToPrimitive");
+    }
+  };
+
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    const before = $262.agent.monotonicNow();
+    try {
+      Atomics.wait(i32a, 0, Symbol("1"), poisonedValueOf);
+    } catch (error) {
+      $262.agent.report('Symbol("1")');
+    }
+    try {
+      Atomics.wait(i32a, 0, Symbol("2"), poisonedToPrimitive);
+    } catch (error) {
+      $262.agent.report('Symbol("2")');
+    }
+    $262.agent.report($262.agent.monotonicNow() - before);
+    $262.agent.leaving();
+  });
 `);
 
-var i32a = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(150);
@@ -67,9 +61,9 @@ $262.agent.sleep(150);
 assert.sameValue(getReport(), 'Symbol("1")');
 assert.sameValue(getReport(), 'Symbol("2")');
 
-var timeDiffReport = getReport();
+const lapse = getReport();
 
-assert(timeDiffReport >= 0, "timeout should be a min of 0ms");
-assert(timeDiffReport <= $ATOMICS_MAX_TIME_EPSILON, "timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON");
+assert(lapse >= 0, 'timeout should be a min of 0ms');
+assert(lapse <= $ATOMICS_MAX_TIME_EPSILON, 'timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON');
 
 assert.sameValue(Atomics.wake(i32a, 0), 0);
diff --git a/test/built-ins/Atomics/wait/symbol-for-value-throws.js b/test/built-ins/Atomics/wait/symbol-for-value-throws.js
index 232195055f..86e06e1d7d 100644
--- a/test/built-ins/Atomics/wait/symbol-for-value-throws.js
+++ b/test/built-ins/Atomics/wait/symbol-for-value-throws.js
@@ -19,16 +19,17 @@ info: |
 features: [Atomics, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray]
 ---*/
 
-var buffer = new SharedArrayBuffer(1024);
-var i32a = new Int32Array(buffer);
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
-var poisonedValueOf = {
+const poisonedValueOf = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
-var poisonedToPrimitive = {
+const poisonedToPrimitive = {
   [Symbol.toPrimitive]: function() {
     throw new Test262Error("passing a poisoned object using @@ToPrimitive");
   }
diff --git a/test/built-ins/Atomics/wait/true-for-timeout-agent.js b/test/built-ins/Atomics/wait/true-for-timeout-agent.js
index 7e3b1fb0c3..bd95c1c525 100644
--- a/test/built-ins/Atomics/wait/true-for-timeout-agent.js
+++ b/test/built-ins/Atomics/wait/true-for-timeout-agent.js
@@ -12,44 +12,37 @@ info: |
 
     Boolean -> If argument is true, return 1. If argument is false, return +0.
 
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
-includes: [ atomicsHelper.js ]
 ---*/
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
-$262.agent.start(
-  `
-var valueOf = {
-  valueOf: function() {
-    return true;
-  }
-};
-
-var toPrimitive = {
-  [Symbol.toPrimitive]: function() {
-    return true;
-  }
-};
-
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  var start = $262.agent.monotonicNow();
-  $262.agent.report(Atomics.wait(i32a, 0, 0, true));
-  $262.agent.report(Atomics.wait(i32a, 0, 0, valueOf));
-  $262.agent.report(Atomics.wait(i32a, 0, 0, toPrimitive));
-  $262.agent.report($262.agent.monotonicNow() - start);
-  $262.agent.leaving();
-})
+$262.agent.start(`
+  const valueOf = {
+    valueOf: function() {
+      return true;
+    }
+  };
+
+  const toPrimitive = {
+    [Symbol.toPrimitive]: function() {
+      return true;
+    }
+  };
+
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    const start = $262.agent.monotonicNow();
+    $262.agent.report(Atomics.wait(i32a, 0, 0, true));
+    $262.agent.report(Atomics.wait(i32a, 0, 0, valueOf));
+    $262.agent.report(Atomics.wait(i32a, 0, 0, toPrimitive));
+    $262.agent.report($262.agent.monotonicNow() - start);
+    $262.agent.leaving();
+  });
 `);
 
-var i32a = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(150);
@@ -58,11 +51,11 @@ assert.sameValue(getReport(), 'timed-out');
 assert.sameValue(getReport(), 'timed-out');
 assert.sameValue(getReport(), 'timed-out');
 
-var timeDiffReport = getReport();
+const lapse = getReport();
 
-assert(timeDiffReport >= 0, 'timeout should be a min of 0ms');
+assert(lapse >= 0, 'timeout should be a min of 0ms');
 
-assert(timeDiffReport <= $ATOMICS_MAX_TIME_EPSILON, 'timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON');
+assert(lapse <= $ATOMICS_MAX_TIME_EPSILON, 'timeout should be a max of $$ATOMICS_MAX_TIME_EPSILON');
 
 assert.sameValue(Atomics.wake(i32a, 0), 0);
 
diff --git a/test/built-ins/Atomics/wait/true-for-timeout.js b/test/built-ins/Atomics/wait/true-for-timeout.js
index 9e9bea15dd..ee4a808bee 100644
--- a/test/built-ins/Atomics/wait/true-for-timeout.js
+++ b/test/built-ins/Atomics/wait/true-for-timeout.js
@@ -16,22 +16,23 @@ features: [Atomics, SharedArrayBuffer, Symbol, Symbol.toPrimitive, TypedArray]
 flags: [CanBlockIsFalse]
 ---*/
 
-var buffer = new SharedArrayBuffer(1024);
-var i32a = new Int32Array(buffer);
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
-var valueOf = {
+const valueOf = {
   valueOf: function() {
     return true;
   }
 };
 
-var toPrimitive = {
+const toPrimitive = {
   [Symbol.toPrimitive]: function() {
     return true;
   }
 };
 
-assert.sameValue(Atomics.wait(i32a, 0, 0, true), "timed-out");
-assert.sameValue(Atomics.wait(i32a, 0, 0, valueOf), "timed-out");
-assert.sameValue(Atomics.wait(i32a, 0, 0, toPrimitive), "timed-out");
+assert.sameValue(Atomics.wait(i32a, 0, 0, true), 'timed-out');
+assert.sameValue(Atomics.wait(i32a, 0, 0, valueOf), 'timed-out');
+assert.sameValue(Atomics.wait(i32a, 0, 0, toPrimitive), 'timed-out');
 
diff --git a/test/built-ins/Atomics/wait/undefined-for-timeout.js b/test/built-ins/Atomics/wait/undefined-for-timeout.js
index 8a8fd19461..2ea65ef5cc 100644
--- a/test/built-ins/Atomics/wait/undefined-for-timeout.js
+++ b/test/built-ins/Atomics/wait/undefined-for-timeout.js
@@ -12,53 +12,49 @@ info: |
     ...
     Undefined    Return NaN.
   5.If q is NaN, let t be +∞, else let t be max(q, 0)
+
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
-var NUMAGENT = 2; // Total number of agents started
-var WAKEUP = 0; // Index all agents are waiting on
-var WAKECOUNT = 2; // Total number of agents to wake up
-
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
+const NUMAGENT = 2; // Total number of agents started
+const WAKEUP = 0; // Index all agents are waiting on
+const WAKECOUNT = 2; // Total number of agents to wake up
 
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  $262.agent.report("A " + Atomics.wait(i32a, 0, 0, undefined));  // undefined => NaN => +Infinity
-  $262.agent.leaving();
-})
+  $262.agent.receiveBroadcast(function(sab) {
+    var i32a = new Int32Array(sab);
+    $262.agent.report("A " + Atomics.wait(i32a, 0, 0, undefined));  // undefined => NaN => +Infinity
+    $262.agent.leaving();
+  });
 `);
 
 $262.agent.start(
   `
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  $262.agent.report("B " + Atomics.wait(i32a, 0, 0));  // undefined timeout arg => NaN => +Infinity
-  $262.agent.leaving();
-})
+  $262.agent.receiveBroadcast(function(sab) {
+    var i32a = new Int32Array(sab);
+    $262.agent.report("B " + Atomics.wait(i32a, 0, 0));  // undefined timeout arg => NaN => +Infinity
+    $262.agent.leaving();
+  });
 `);
 
-var i32a = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
 $262.agent.broadcast(i32a.buffer);
-
 $262.agent.sleep(500); // Ample time
 
-assert.sameValue($262.agent.getReport(), null);
+// No Reports made before wait
+assert.sameValue(getReport(), null);
 
 assert.sameValue(Atomics.wake(i32a, WAKEUP, WAKECOUNT), WAKECOUNT);
 
-var sortedReports = [];
+const sortedReports = [];
 for (var i = 0; i < NUMAGENT; i++) {
   sortedReports.push(getReport());
 }
 sortedReports.sort();
 
-assert.sameValue(sortedReports[0], "A ok");
-assert.sameValue(sortedReports[1], "B ok");
+assert.sameValue(sortedReports[0], 'A ok');
+assert.sameValue(sortedReports[1], 'B ok');
diff --git a/test/built-ins/Atomics/wait/undefined-index-defaults-to-zero.js b/test/built-ins/Atomics/wait/undefined-index-defaults-to-zero.js
index ac3bda6bb6..ca25def370 100644
--- a/test/built-ins/Atomics/wait/undefined-index-defaults-to-zero.js
+++ b/test/built-ins/Atomics/wait/undefined-index-defaults-to-zero.js
@@ -17,33 +17,26 @@ info: |
 
           If value is undefined, then
           Let index be 0.
+
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  $262.agent.report(Atomics.wait(i32a, undefined, 0, 1000)); // undefined index => 0
-  $262.agent.leaving();
-})
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    $262.agent.report(Atomics.wait(i32a, undefined, 0, 1000)); // undefined index => 0
+    $262.agent.leaving();
+  });
 `);
 
-var sab = new SharedArrayBuffer(4);
-var i32a = new Int32Array(sab);
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
 $262.agent.broadcast(i32a.buffer);
-
 $262.agent.sleep(150);
 
 assert.sameValue(Atomics.wake(i32a, 0), 1); // wake at index 0
 assert.sameValue(Atomics.wake(i32a, 0), 0); // wake again at index 0, and 0 agents should be woken
-
-assert.sameValue(getReport(), "ok");
-
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
+assert.sameValue(getReport(), 'ok');
diff --git a/test/built-ins/Atomics/wait/value-not-equal.js b/test/built-ins/Atomics/wait/value-not-equal.js
index 8240a3271a..9dce875fa6 100644
--- a/test/built-ins/Atomics/wait/value-not-equal.js
+++ b/test/built-ins/Atomics/wait/value-not-equal.js
@@ -14,34 +14,28 @@ info: |
     a.Perform LeaveCriticalSection(WL).
     b. Return the String "not-equal".
 
-features: [Atomics, SharedArrayBuffer, TypedArray]
 includes: [atomicsHelper.js]
+features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
 var value = 42;
 
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
 
-  $262.agent.report(Atomics.store(i32a, 0, ${value}));
-  $262.agent.report(Atomics.wait(i32a, 0, 0));
-  $262.agent.leaving();
-});
+    $262.agent.report(Atomics.store(i32a, 0, ${value}));
+    $262.agent.report(Atomics.wait(i32a, 0, 0));
+    $262.agent.leaving();
+  });
 `);
 
-var i32a = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
 $262.agent.broadcast(i32a.buffer);
-
+$262.agent.sleep(100);
 assert.sameValue(getReport(), value.toString());
-assert.sameValue(getReport(), "not-equal");
+assert.sameValue(getReport(), 'not-equal');
 
diff --git a/test/built-ins/Atomics/wait/wait-index-value-not-equal.js b/test/built-ins/Atomics/wait/wait-index-value-not-equal.js
index 94b6d4eabe..53db6ae85c 100644
--- a/test/built-ins/Atomics/wait/wait-index-value-not-equal.js
+++ b/test/built-ins/Atomics/wait/wait-index-value-not-equal.js
@@ -12,35 +12,27 @@ info: |
     a.Perform LeaveCriticalSection(WL).
     b. Return the String "not-equal".
 
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
 
-  $262.agent.report(Atomics.wait(i32a, 0, 44, 1000));
-  $262.agent.report(Atomics.wait(i32a, 0, 251.4, 1000));
-  $262.agent.leaving();
-});
+    $262.agent.report(Atomics.wait(i32a, 0, 44, 1000));
+    $262.agent.report(Atomics.wait(i32a, 0, 251.4, 1000));
+    $262.agent.leaving();
+  });
 `);
 
-var i32a = new Int32Array(new SharedArrayBuffer(1024));
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
 $262.agent.broadcast(i32a.buffer);
+$262.agent.sleep(100);
 
-$262.agent.sleep(200);
-
-
-assert.sameValue(getReport(), "not-equal");
-assert.sameValue(getReport(), "not-equal");
-
+assert.sameValue(getReport(), 'not-equal');
+assert.sameValue(getReport(), 'not-equal');
 assert.sameValue(Atomics.wake(i32a, 0), 0);
diff --git a/test/built-ins/Atomics/wait/waiterlist-block-indexedposition-wake.js b/test/built-ins/Atomics/wait/waiterlist-block-indexedposition-wake.js
index 6c800db525..20fc23f999 100644
--- a/test/built-ins/Atomics/wait/waiterlist-block-indexedposition-wake.js
+++ b/test/built-ins/Atomics/wait/waiterlist-block-indexedposition-wake.js
@@ -18,19 +18,13 @@ info: |
   ...
   4. Return the WaiterList that is referenced by the pair (block, i).
 
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
 
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
-    var i32a = new Int32Array(sab);
+    const i32a = new Int32Array(sab);
 
     // Wait on index 0
     Atomics.wait(i32a, 0, 0, 200);
@@ -41,17 +35,18 @@ $262.agent.start(`
 
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
-    var i32a = new Int32Array(sab);
+    const i32a = new Int32Array(sab);
 
     // Wait on index 2
     Atomics.wait(i32a, 2, 0, 200);
-    $262.agent.report(0);
+    $262.agent.report(2);
     $262.agent.leaving();
   });
 `);
 
-var length = 4 * Int32Array.BYTES_PER_ELEMENT;
-var i32a = new Int32Array(new SharedArrayBuffer(length));
+const i32a = new Int32Array(
+  new SharedArrayBuffer(4 * Int32Array.BYTES_PER_ELEMENT)
+);
 
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(10);
@@ -61,5 +56,5 @@ Atomics.wake(i32a, 2, 1);
 assert.sameValue(getReport(), '2');
 
 // Wake index 0
-Atomics.wake(i32a, 2, 1);
+Atomics.wake(i32a, 0, 1);
 assert.sameValue(getReport(), '0');
diff --git a/test/built-ins/Atomics/wait/waiterlist-order-of-operations-is-fifo.js b/test/built-ins/Atomics/wait/waiterlist-order-of-operations-is-fifo.js
index d049f9676b..1890a2828e 100644
--- a/test/built-ins/Atomics/wait/waiterlist-order-of-operations-is-fifo.js
+++ b/test/built-ins/Atomics/wait/waiterlist-order-of-operations-is-fifo.js
@@ -12,27 +12,20 @@ info: |
     ...
     3.Add W to the end of the list of waiters in WL.
 
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
-const agent1 = '1';
-const agent2 = '2';
-const agent3 = '3';
+var agent1 = '1';
+var agent2 = '2';
+var agent3 = '3';
 
 $262.agent.start(`
   $262.agent.receiveBroadcast(function(sab) {
     const i32a = new Int32Array(sab);
 
     $262.agent.report(${agent1});
-    Atomics.wait(i32a, 0, 0);
+    $262.agent.report(Atomics.wait(i32a, 1, 0));
     $262.agent.report(${agent1});
     $262.agent.leaving();
   });
@@ -43,7 +36,7 @@ $262.agent.start(`
     const i32a = new Int32Array(sab);
 
     $262.agent.report(${agent2});
-    Atomics.wait(i32a, 0, 0);
+    $262.agent.report(Atomics.wait(i32a, 2, 0));
     $262.agent.report(${agent2});
     $262.agent.leaving();
   });
@@ -54,29 +47,32 @@ $262.agent.start(`
     const i32a = new Int32Array(sab);
 
     $262.agent.report(${agent3});
-    Atomics.wait(i32a, 0, 0);
+    $262.agent.report(Atomics.wait(i32a, 3, 0));
     $262.agent.report(${agent3});
     $262.agent.leaving();
   });
 `);
 
 
-var i32a = new Int32Array(new SharedArrayBuffer(4));
+const i32a = new Int32Array(
+  new SharedArrayBuffer(4 * Int32Array.BYTES_PER_ELEMENT)
+);
 
 $262.agent.broadcast(i32a.buffer);
+$262.agent.sleep(500);
 
-var orderAgentsStarted = getReport() + getReport() + getReport(); // can be started in any order
-
-assert.sameValue(Atomics.wake(i32a, 0, 1), 1);
-
-var orderAgentsWereWoken = getReport();
-
-assert.sameValue(Atomics.wake(i32a, 0, 1), 1);
-
-orderAgentsWereWoken += getReport();
+// Agents may be started in any order...
+const started = [getReport(), getReport(), getReport()];
 
-assert.sameValue(Atomics.wake(i32a, 0, 1), 1);
+// Agents must wake in the order they waited
+assert.sameValue(Atomics.wake(i32a, 1, 1), 1);
+assert.sameValue(getReport(), 'ok');
+assert.sameValue(getReport(), started[0]);
 
-orderAgentsWereWoken += getReport();
+assert.sameValue(Atomics.wake(i32a, 2, 1), 1);
+assert.sameValue(getReport(), 'ok');
+assert.sameValue(getReport(), started[1]);
 
-assert.sameValue(orderAgentsStarted, orderAgentsWereWoken);  // agents should wake in the same order as they were started FIFO
+assert.sameValue(Atomics.wake(i32a, 3, 1), 1);
+assert.sameValue(getReport(), 'ok');
+assert.sameValue(getReport(), started[2]);
diff --git a/test/built-ins/Atomics/wait/was-woken-before-timeout.js b/test/built-ins/Atomics/wait/was-woken-before-timeout.js
index b0efbcb149..008955b57f 100644
--- a/test/built-ins/Atomics/wait/was-woken-before-timeout.js
+++ b/test/built-ins/Atomics/wait/was-woken-before-timeout.js
@@ -18,38 +18,39 @@ info: |
 
           If value is undefined, then
           Let index be 0.
-features: [Atomics, SharedArrayBuffer, TypedArray]
+includes: [atomicsHelper.js]
+features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 ---*/
 
-var sleeping = 100;
+var sleeping = 10;
 var timeout = 20000;
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    sleeping += 100;
-    $262.agent.sleep(100);
-  }
-  return r;
-}
-
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  $262.agent.report(Atomics.wait(i32a, 0, 0, ${timeout}));
-  $262.agent.leaving();
-});
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    const before = $262.agent.monotonicNow();
+    const unpark = Atomics.wait(i32a, 0, 0, ${timeout});
+    $262.agent.report($262.agent.monotonicNow() - before);
+    $262.agent.report(unpark);
+    $262.agent.leaving();
+  });
 `);
 
-var sab = new SharedArrayBuffer(4);
-var i32a = new Int32Array(sab);
-
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(sleeping);
 
 assert.sameValue(Atomics.wake(i32a, 0), 1);
 
-assert.sameValue(getReport(), "ok");
-assert(sleeping < timeout, "this test assumes it won't last for more than 20 seconds");
+const lapse = getReport();
+
+assert(
+  sleeping + lapse < timeout,
+  `${sleeping + lapse} should be less than ${timeout}`
+);
+assert.sameValue(getReport(), 'ok');
+
 
diff --git a/test/built-ins/Atomics/wait/was-woken.js b/test/built-ins/Atomics/wait/was-woken.js
deleted file mode 100644
index 9bba4693f0..0000000000
--- a/test/built-ins/Atomics/wait/was-woken.js
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (C) 2017 Mozilla Corporation.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-atomics.wait
-description: >
-  Test that Atomics.wait returns the right result when it was awoken.
-features: [Atomics, SharedArrayBuffer, TypedArray]
----*/
-
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
-$262.agent.start(`
-$262.agent.receiveBroadcast(function(sab, id) {
-  var i32a = new Int32Array(sab);
-  $262.agent.report(Atomics.wait(i32a, 0, 0)); // No timeout => Infinity
-  $262.agent.leaving();
-});
-`);
-
-var i32a = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
-
-$262.agent.broadcast(i32a.buffer);
-$262.agent.sleep(500); // Give the agent a chance to wait
-Atomics.wake(i32a, 0);
-assert.sameValue(getReport(), "ok");
diff --git a/test/built-ins/Atomics/wake/bad-range.js b/test/built-ins/Atomics/wake/bad-range.js
index ab3ab03bb3..247550a7c1 100644
--- a/test/built-ins/Atomics/wake/bad-range.js
+++ b/test/built-ins/Atomics/wake/bad-range.js
@@ -23,6 +23,6 @@ testWithTypedArrayConstructors(function(TA) {
   testWithAtomicsOutOfBoundsIndices(function(IdxGen) {
     assert.throws(RangeError, function() {
       Atomics.wake(view, IdxGen(view), 0);
-    }, 'Atomics.wake(view, IdxGen(view), 0) throws RangeError'); // Even with waking zero
+    }, '`Atomics.wake(view, IdxGen(view), 0)` throws RangeError'); // Even with waking zero
   });
 }, views);
diff --git a/test/built-ins/Atomics/wake/bigint/bad-range.js b/test/built-ins/Atomics/wake/bigint/bad-range.js
index 78a3786680..e35b19ba84 100644
--- a/test/built-ins/Atomics/wake/bigint/bad-range.js
+++ b/test/built-ins/Atomics/wake/bigint/bad-range.js
@@ -21,5 +21,5 @@ let i64a = new BigInt64Array(sab);
 testWithAtomicsOutOfBoundsIndices(function(IdxGen) {
   assert.throws(RangeError, function() {
     Atomics.wake(view, IdxGen(i64a), 0);
-  }, 'Atomics.wake(view, IdxGen(i64a), 0) throws RangeError');
+  }, '`Atomics.wake(view, IdxGen(i64a), 0)` throws RangeError');
 });
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 6b9b760d7c..b056597318 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
@@ -17,10 +17,10 @@ features: [Atomics, BigInt, TypedArray]
 
 var poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
 assert.throws(TypeError, function() {
   Atomics.wake(new BigUint64Array(), poisoned, poisoned);
-}, 'BigUint64Array');
+}, '`Atomics.wake(new BigUint64Array(), poisoned, poisoned)` throws TypeError');
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 042f66707f..30cfc76bcc 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
@@ -18,14 +18,14 @@ features: [ArrayBuffer, Atomics, BigInt, TypedArray]
 var i64a = new BigInt64Array(new ArrayBuffer(4));
 var poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
 assert.throws(TypeError, function() {
   Atomics.wake(i64a, 0, 0);
-});
+}, '`Atomics.wake(i64a, 0, 0)` throws TypeError');
 
 assert.throws(TypeError, function() {
   Atomics.wake(i64a, poisoned, poisoned);
-});
+}, '`Atomics.wake(i64a, poisoned, poisoned)` throws TypeError');
diff --git a/test/built-ins/Atomics/wake/bigint/null-bufferdata-throws.js b/test/built-ins/Atomics/wake/bigint/null-bufferdata-throws.js
index 3981e9200e..d237accfa6 100644
--- a/test/built-ins/Atomics/wake/bigint/null-bufferdata-throws.js
+++ b/test/built-ins/Atomics/wake/bigint/null-bufferdata-throws.js
@@ -19,7 +19,7 @@ features: [ArrayBuffer, Atomics, BigInt, TypedArray]
 var i64a = new BigInt64Array(new ArrayBuffer(1024));
 var poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
@@ -28,4 +28,4 @@ $DETACHBUFFER(i64a.buffer);
 
 assert.throws(TypeError, function() {
   Atomics.wake(i64a, poisoned, poisoned);
-});
+}, '`Atomics.wake(i64a, poisoned, poisoned)` throws TypeError');
diff --git a/test/built-ins/Atomics/wake/bigint/wake-all-on-loc.js b/test/built-ins/Atomics/wake/bigint/wake-all-on-loc.js
index 6494b0117a..9fa4964961 100644
--- a/test/built-ins/Atomics/wake/bigint/wake-all-on-loc.js
+++ b/test/built-ins/Atomics/wake/bigint/wake-all-on-loc.js
@@ -6,29 +6,30 @@ esid: sec-atomics.wake
 description: >
   Test that Atomics.wake wakes all waiters on a location, but does not
   wake waiters on other locations.
+includes: [atomicsHelper.js]
 features: [Atomics, BigInt, SharedArrayBuffer, TypedArray]
 ---*/
 
-var WAKEUP = 0;                 // Waiters on this will be woken
-var DUMMY = 1;                  // Waiters on this will not be woken
-var RUNNING = 2;                // Accounting of live agents
-var NUMELEM = 3;
-var NUMAGENT = 3;
+const WAKEUP = 0;                 // Waiters on this will be woken
+const DUMMY = 1;                  // Waiters on this will not be woken
+const RUNNING = 2;                // Accounting of live agents
+const NUMELEM = 3;
+const NUMAGENT = 3;
 
 for (var i = 0; i < NUMAGENT; i++) {
-$262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i64a = new BigInt64Array(sab);
-  Atomics.add(i64a, ${RUNNING}, 1);
-  $262.agent.report("A " + Atomics.wait(i64a, ${WAKEUP}, 0));
-  $262.agent.leaving();
-});
-`);
+  $262.agent.start(`
+    $262.agent.receiveBroadcast(function(sab) {
+      const i64a = new BigInt64Array(sab);
+      Atomics.add(i64a, ${RUNNING}, 1);
+      $262.agent.report("A " + Atomics.wait(i64a, ${WAKEUP}, 0));
+      $262.agent.leaving();
+    });
+  `);
 }
 
 $262.agent.start(`
 $262.agent.receiveBroadcast(function(sab) {
-  var i64a = new BigInt64Array(sab);
+  const i64a = new BigInt64Array(sab);
   Atomics.add(i64a, ${RUNNING}, 1);
   // This will always time out.
   $262.agent.report("B " + Atomics.wait(i64a, ${DUMMY}, 0, 10));
@@ -36,7 +37,9 @@ $262.agent.receiveBroadcast(function(sab) {
 });
 `);
 
-var i64a = new BigInt64Array(new SharedArrayBuffer(NUMELEM * BigInt64Array.BYTES_PER_ELEMENT));
+const i64a = new BigInt64Array(
+  new SharedArrayBuffer(NUMELEM * BigInt64Array.BYTES_PER_ELEMENT)
+);
 $262.agent.broadcast(i64a.buffer);
 
 // Wait for agents to be running.
@@ -47,7 +50,11 @@ waitUntil(i64a, RUNNING, NUMAGENT + 1);
 $262.agent.sleep(50);
 
 // Wake all waiting on WAKEUP, should be 3 always, they won't time out.
-assert.sameValue(Atomics.wake(i64a, WAKEUP), NUMAGENT);
+assert.sameValue(
+  Atomics.wake(i64a, WAKEUP),
+  NUMAGENT,
+  'Atomics.wake(i64a, WAKEUP) equals the value of `NUMAGENT` (3)'
+);
 
 var rs = [];
 for (var i = 0; i < NUMAGENT + 1; i++) {
@@ -56,23 +63,7 @@ for (var i = 0; i < NUMAGENT + 1; i++) {
 rs.sort();
 
 for (var i = 0; i < NUMAGENT; i++) {
-  assert.sameValue(rs[i], "A ok");
-}
-assert.sameValue(rs[NUMAGENT], "B timed-out");
-
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
+  assert.sameValue(rs[i], "A ok", 'The value of rs[i] is "A ok"');
 }
+assert.sameValue(rs[NUMAGENT], "B timed-out", 'The value of rs[NUMAGENT] is "B timed-out"');
 
-function waitUntil(i64a, k, value) {
-  var i = 0;
-  while (Atomics.load(i64a, k) !== value && i < 15) {
-    $262.agent.sleep(10);
-    i++;
-  }
-  assert.sameValue(Atomics.load(i64a, k), value, "All agents are running");
-}
diff --git a/test/built-ins/Atomics/wake/count-boundary-cases.js b/test/built-ins/Atomics/wake/count-boundary-cases.js
index 23c32180d3..1ffb865ef3 100644
--- a/test/built-ins/Atomics/wake/count-boundary-cases.js
+++ b/test/built-ins/Atomics/wake/count-boundary-cases.js
@@ -28,9 +28,21 @@ features: [Atomics, SharedArrayBuffer, TypedArray]
 var sab = new SharedArrayBuffer(4);
 var view = new Int32Array(sab);
 
-assert.sameValue(Atomics.wake(view, 0, -3), 0);
-assert.sameValue(Atomics.wake(view, 0, Number.POSITIVE_INFINITY), 0);
-assert.sameValue(Atomics.wake(view, 0, undefined), 0);
-assert.sameValue(Atomics.wake(view, 0, "33"), 0);
-assert.sameValue(Atomics.wake(view, 0, { valueOf: 8 }), 0);
-assert.sameValue(Atomics.wake(view, 0), 0);
+assert.sameValue(Atomics.wake(view, 0, -3), 0, 'Atomics.wake(view, 0, -3) returns 0');
+assert.sameValue(
+  Atomics.wake(view, 0, Number.POSITIVE_INFINITY),
+  0,
+  'Atomics.wake(view, 0, Number.POSITIVE_INFINITY) returns 0'
+);
+assert.sameValue(
+  Atomics.wake(view, 0, undefined),
+  0,
+  'Atomics.wake(view, 0, undefined) returns 0'
+);
+assert.sameValue(Atomics.wake(view, 0, "33"), 0, 'Atomics.wake(view, 0, "33") returns 0');
+assert.sameValue(
+  Atomics.wake(view, 0, { valueOf: 8 }),
+  0,
+  'Atomics.wake(view, 0, {valueOf: 8}) returns 0'
+);
+assert.sameValue(Atomics.wake(view, 0), 0, 'Atomics.wake(view, 0) returns 0');
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 d85adb7709..9a3ed079fd 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
@@ -12,6 +12,7 @@ info: |
   3. If count is undefined, let c be +∞.
   ...
 
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
@@ -27,44 +28,49 @@ function getReport() {
 }
 
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  $262.agent.report("A " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
-  $262.agent.leaving();
-});
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    $262.agent.report("A " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
+    $262.agent.leaving();
+  });
 `);
 
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  $262.agent.report("B " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
-  $262.agent.leaving();
-});
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    $262.agent.report("B " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
+    $262.agent.leaving();
+  });
 `);
 
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  $262.agent.report("C " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
-  $262.agent.leaving();
-});
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    $262.agent.report("C " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
+    $262.agent.leaving();
+  });
 `);
 
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  $262.agent.report("D " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
-  $262.agent.leaving();
-});
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    $262.agent.report("D " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
+    $262.agent.leaving();
+  });
 `);
 
-var i32a = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
 $262.agent.broadcast(i32a.buffer);
-
 $262.agent.sleep(20);
 
-assert.sameValue(Atomics.wake(i32a, WAKEUP /*, count missing */), NUMAGENT);
+assert.sameValue(
+  Atomics.wake(i32a, WAKEUP /*, count missing */),
+  NUMAGENT,
+  'Atomics.wake(i32a, WAKEUP /*, count missing */) equals the value of `NUMAGENT` (4)'
+);
 
 var sortedReports = [];
 for (var i = 0; i < NUMAGENT; i++) {
@@ -72,7 +78,7 @@ for (var i = 0; i < NUMAGENT; i++) {
 }
 sortedReports.sort();
 
-assert.sameValue(sortedReports[0], "A ok");
-assert.sameValue(sortedReports[1], "B ok");
-assert.sameValue(sortedReports[2], "C ok");
-assert.sameValue(sortedReports[3], "D ok");
+assert.sameValue(sortedReports[0], "A ok", 'The value of sortedReports[0] is "A ok"');
+assert.sameValue(sortedReports[1], "B ok", 'The value of sortedReports[1] is "B ok"');
+assert.sameValue(sortedReports[2], "C ok", 'The value of sortedReports[2] is "C ok"');
+assert.sameValue(sortedReports[3], "D ok", 'The value of sortedReports[3] is "D ok"');
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 b6f26bb05f..0d8b569b50 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
@@ -10,61 +10,60 @@ info: |
 
   3.If count is undefined, let c be +∞.
 
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
-var NUMAGENT = 4; // Total number of agents started
-var WAKEUP = 0; // Index all agents are waiting on
-
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
+const NUMAGENT = 4; // Total number of agents started
+const WAKEUP = 0; // Index all agents are waiting on
 
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  $262.agent.report("A " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
-  $262.agent.leaving();
-});
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    $262.agent.report("A " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
+    $262.agent.leaving();
+  });
 `);
 
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  $262.agent.report("B " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
-  $262.agent.leaving();
-});
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    $262.agent.report("B " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
+    $262.agent.leaving();
+  });
 `);
 
 
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  $262.agent.report("C " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
-  $262.agent.leaving();
-});
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    $262.agent.report("C " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
+    $262.agent.leaving();
+  });
 `);
 
 
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  $262.agent.report("D " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
-  $262.agent.leaving();
-});
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    $262.agent.report("D " + Atomics.wait(i32a, ${WAKEUP}, 0, 50));
+    $262.agent.leaving();
+  });
 `);
 
-var i32a = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
 $262.agent.broadcast(i32a.buffer);
 
 $262.agent.sleep(20); // half of timeout
 
-assert.sameValue(Atomics.wake(i32a, WAKEUP, undefined), NUMAGENT);
+assert.sameValue(
+  Atomics.wake(i32a, WAKEUP, undefined),
+  NUMAGENT,
+  'Atomics.wake(i32a, WAKEUP, undefined) equals the value of `NUMAGENT` (4)'
+);
 
 var sortedReports = [];
 for (var i = 0; i < NUMAGENT; i++) {
@@ -72,7 +71,7 @@ for (var i = 0; i < NUMAGENT; i++) {
 }
 sortedReports.sort();
 
-assert.sameValue(sortedReports[0], "A ok");
-assert.sameValue(sortedReports[1], "B ok");
-assert.sameValue(sortedReports[2], "C ok");
-assert.sameValue(sortedReports[3], "D ok");
+assert.sameValue(sortedReports[0], "A ok", 'The value of sortedReports[0] is "A ok"');
+assert.sameValue(sortedReports[1], "B ok", 'The value of sortedReports[1] is "B ok"');
+assert.sameValue(sortedReports[2], "C ok", 'The value of sortedReports[2] is "C ok"');
+assert.sameValue(sortedReports[3], "D ok", 'The value of sortedReports[3] is "D ok"');
diff --git a/test/built-ins/Atomics/wake/count-from-nans.js b/test/built-ins/Atomics/wake/count-from-nans.js
index 21e234bf94..fc425cee64 100644
--- a/test/built-ins/Atomics/wake/count-from-nans.js
+++ b/test/built-ins/Atomics/wake/count-from-nans.js
@@ -28,5 +28,5 @@ var sab = new SharedArrayBuffer(4);
 var view = new Int32Array(sab);
 
 NaNs.forEach(nan => {
-  assert.sameValue(Atomics.wake(view, 0, nan), 0);
+  assert.sameValue(Atomics.wake(view, 0, nan), 0, 'Atomics.wake(view, 0, nan) returns 0');
 });
diff --git a/test/built-ins/Atomics/wake/count-symbol-throws.js b/test/built-ins/Atomics/wake/count-symbol-throws.js
index 4edad8c342..585434c58f 100644
--- a/test/built-ins/Atomics/wake/count-symbol-throws.js
+++ b/test/built-ins/Atomics/wake/count-symbol-throws.js
@@ -22,4 +22,4 @@ var view = new Int32Array(sab);
 
 assert.throws(TypeError, function() {
   Atomics.wake(view, 0, Symbol());
-});
+}, '`Atomics.wake(view, 0, Symbol())` throws TypeError');
diff --git a/test/built-ins/Atomics/wake/count-tointeger-throws-then-wake-throws.js b/test/built-ins/Atomics/wake/count-tointeger-throws-then-wake-throws.js
index 83ed31f958..7796716500 100644
--- a/test/built-ins/Atomics/wake/count-tointeger-throws-then-wake-throws.js
+++ b/test/built-ins/Atomics/wake/count-tointeger-throws-then-wake-throws.js
@@ -21,10 +21,10 @@ var sab = new SharedArrayBuffer(4);
 var view = new Int32Array(sab);
 var poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
 assert.throws(Test262Error, function() {
   Atomics.wake(view, 0, poisoned);
-});
+}, '`Atomics.wake(view, 0, poisoned)` throws Test262Error');
diff --git a/test/built-ins/Atomics/wake/good-views.js b/test/built-ins/Atomics/wake/good-views.js
index 72ace0788a..7fbc763a80 100644
--- a/test/built-ins/Atomics/wake/good-views.js
+++ b/test/built-ins/Atomics/wake/good-views.js
@@ -14,7 +14,7 @@ var sab = new SharedArrayBuffer(1024);
 var view = new Int32Array(sab, 32, 20);
 
 view[0] = 0;
-assert.sameValue(Atomics.wake(view, 0, 1), 0);
+assert.sameValue(Atomics.wake(view, 0, 1), 0, 'Atomics.wake(view, 0, 1) returns 0');
 
 // In-bounds boundary cases for indexing
 testWithAtomicsInBoundsIndices(function(IdxGen) {
@@ -23,5 +23,5 @@ testWithAtomicsInBoundsIndices(function(IdxGen) {
   // Atomics.store() computes an index from Idx in the same way as other
   // Atomics operations, not quite like view[Idx].
   Atomics.store(view, Idx, 37);
-  assert.sameValue(Atomics.wake(view, Idx, 1), 0);
+  assert.sameValue(Atomics.wake(view, Idx, 1), 0, 'Atomics.wake(view, Idx, 1) returns 0');
 });
diff --git a/test/built-ins/Atomics/wake/negative-count.js b/test/built-ins/Atomics/wake/negative-count.js
index 917f0d76ec..df172ff2e1 100644
--- a/test/built-ins/Atomics/wake/negative-count.js
+++ b/test/built-ins/Atomics/wake/negative-count.js
@@ -5,28 +5,24 @@
 esid: sec-atomics.wake
 description: >
   Test that Atomics.wake wakes zero waiters if the count is negative
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var ia = new Int32Array(sab);
-  $262.agent.report(Atomics.wait(ia, 0, 0, 1000)); // Timeout after 1 second
-  $262.agent.leaving();
-})
+  $262.agent.receiveBroadcast(function(sab) {
+    var i32a = new Int32Array(sab);
+    $262.agent.report(Atomics.wait(i32a, 0, 0, 1000)); // Timeout after 1 second
+    $262.agent.leaving();
+  });
 `);
 
-var ia = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
-$262.agent.broadcast(ia.buffer);
+$262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(500); // Give the agent a chance to wait
-assert.sameValue(Atomics.wake(ia, 0, -1), 0); // Don't actually wake it
-assert.sameValue(getReport(), "timed-out");
+assert.sameValue(Atomics.wake(i32a, 0, -1), 0, 'Atomics.wake(i32a, 0, -1) returns 0'); // Don't actually wake it
+assert.sameValue(getReport(), 'timed-out', 'getReport() returns "timed-out"');
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
diff --git a/test/built-ins/Atomics/wake/negative-index-throws.js b/test/built-ins/Atomics/wake/negative-index-throws.js
index c092f22074..68637f6634 100644
--- a/test/built-ins/Atomics/wake/negative-index-throws.js
+++ b/test/built-ins/Atomics/wake/negative-index-throws.js
@@ -20,19 +20,19 @@ var sab = new SharedArrayBuffer(1024);
 var i32a = new Int32Array(sab);
 var poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
 assert.throws(RangeError, function() {
   Atomics.wake(i32a, -Infinity, poisoned);
-}, 'Atomics.wake(i32a, -Infinity, poisoned) throws RangeError');
+}, '`Atomics.wake(i32a, -Infinity, poisoned)` throws RangeError');
 assert.throws(RangeError, function() {
   Atomics.wake(i32a, -7.999, poisoned);
-}, 'Atomics.wake(i32a, -7.999, poisoned) throws RangeError');
+}, '`Atomics.wake(i32a, -7.999, poisoned)` throws RangeError');
 assert.throws(RangeError, function() {
   Atomics.wake(i32a, -1, poisoned);
-}, 'Atomics.wake(i32a, -1, poisoned) throws RangeError');
+}, '`Atomics.wake(i32a, -1, poisoned)` throws RangeError');
 assert.throws(RangeError, function() {
   Atomics.wake(i32a, -300, poisoned);
-}, 'Atomics.wake(i32a, -300, poisoned) throws RangeError');
+}, '`Atomics.wake(i32a, -300, poisoned)` throws RangeError');
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 d7b9e547ae..60f6103068 100644
--- a/test/built-ins/Atomics/wake/non-int32-typedarray-throws.js
+++ b/test/built-ins/Atomics/wake/non-int32-typedarray-throws.js
@@ -17,38 +17,38 @@ features: [Atomics, Float32Array, Float64Array, Int8Array, TypedArray, Uint16Arr
 
 var poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
 assert.throws(TypeError, function() {
   Atomics.wake(new Float64Array(), poisoned, poisoned);
-}, 'Float64Array');
+}, '`Atomics.wake(new Float64Array(), poisoned, poisoned)` throws TypeError');
 
 assert.throws(TypeError, function() {
   Atomics.wake(new Float32Array(), poisoned, poisoned);
-}, 'Float32Array');
+}, '`Atomics.wake(new Float32Array(), poisoned, poisoned)` throws TypeError');
 
 assert.throws(TypeError, function() {
   Atomics.wake(new Int16Array(), poisoned, poisoned);
-}, 'Int16Array');
+}, '`Atomics.wake(new Int16Array(), poisoned, poisoned)` throws TypeError');
 
 assert.throws(TypeError, function() {
   Atomics.wake(new Int8Array(), poisoned, poisoned);
-}, 'Int8Array');
+}, '`Atomics.wake(new Int8Array(), poisoned, poisoned)` throws TypeError');
 
 assert.throws(TypeError, function() {
   Atomics.wake(new Uint32Array(),  poisoned, poisoned);
-}, 'Uint32Array');
+}, '`Atomics.wake(new Uint32Array(), poisoned, poisoned)` throws TypeError');
 
 assert.throws(TypeError, function() {
   Atomics.wake(new Uint16Array(), poisoned, poisoned);
-}, 'Uint16Array');
+}, '`Atomics.wake(new Uint16Array(), poisoned, poisoned)` throws TypeError');
 
 assert.throws(TypeError, function() {
   Atomics.wait(new Uint8Array(), poisoned, poisoned);
-}, 'Uint8Array');
+}, '`Atomics.wait(new Uint8Array(), poisoned, poisoned)` throws TypeError');
 
 assert.throws(TypeError, function() {
   Atomics.wake(new Uint8ClampedArray(), poisoned, poisoned);
-}, 'Uint8ClampedArray');
+}, '`Atomics.wake(new Uint8ClampedArray(), 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 bd783ab62a..b31d39aa4d 100644
--- a/test/built-ins/Atomics/wake/non-shared-bufferdata-throws.js
+++ b/test/built-ins/Atomics/wake/non-shared-bufferdata-throws.js
@@ -18,14 +18,14 @@ features: [ArrayBuffer, Atomics, TypedArray]
 var i32a = new Int32Array(new ArrayBuffer(4));
 var poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
 assert.throws(TypeError, function() {
   Atomics.wake(i32a, 0, 0);
-});
+}, '`Atomics.wake(i32a, 0, 0)` throws TypeError');
 
 assert.throws(TypeError, function() {
   Atomics.wake(i32a, poisoned, poisoned);
-});
+}, '`Atomics.wake(i32a, poisoned, poisoned)` throws TypeError');
diff --git a/test/built-ins/Atomics/wake/non-views.js b/test/built-ins/Atomics/wake/non-views.js
index 711d690392..032a489162 100644
--- a/test/built-ins/Atomics/wake/non-views.js
+++ b/test/built-ins/Atomics/wake/non-views.js
@@ -12,5 +12,5 @@ features: [ArrayBuffer, arrow-function, Atomics, DataView, for-of, let, SharedAr
 testWithAtomicsNonViewValues(function(view) {
   assert.throws(TypeError, function() {
     Atomics.wake(view, 0, 0);
-  }, 'Atomics.wake(view, 0, 0) throws TypeError'); // Even with count == 0
+  }, '`Atomics.wake(view, 0, 0)` throws TypeError'); // Even with count == 0
 });
diff --git a/test/built-ins/Atomics/wake/nonshared-int-views.js b/test/built-ins/Atomics/wake/nonshared-int-views.js
index e8cfc62481..ca3f198c6a 100644
--- a/test/built-ins/Atomics/wake/nonshared-int-views.js
+++ b/test/built-ins/Atomics/wake/nonshared-int-views.js
@@ -16,5 +16,5 @@ testWithTypedArrayConstructors(function(TA) {
   // Should fail even if waking zero waiters
   assert.throws(TypeError, function() {
     Atomics.wake(new TA(buffer), 0, 0);
-  }, 'Atomics.wake(new TA(buffer), 0, 0) throws TypeError');
+  }, '`Atomics.wake(new TA(buffer), 0, 0)` throws TypeError');
 }, views);
diff --git a/test/built-ins/Atomics/wake/not-a-typedarray-throws.js b/test/built-ins/Atomics/wake/not-a-typedarray-throws.js
index 7acf27e8c0..2e0203e290 100644
--- a/test/built-ins/Atomics/wake/not-a-typedarray-throws.js
+++ b/test/built-ins/Atomics/wake/not-a-typedarray-throws.js
@@ -16,14 +16,14 @@ features: [Atomics]
 
 var poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
 assert.throws(TypeError, function() {
   Atomics.wait({}, 0, 0, 0);
-});
+}, '`Atomics.wait({}, 0, 0, 0)` throws TypeError');
 
 assert.throws(TypeError, function () {
   Atomics.wait({}, poisoned, poisoned, poisoned);
-});
+}, '`Atomics.wait({}, poisoned, poisoned, poisoned)` throws TypeError');
diff --git a/test/built-ins/Atomics/wake/not-an-object-throws.js b/test/built-ins/Atomics/wake/not-an-object-throws.js
index b8ca158b4f..cf8cc3e5d6 100644
--- a/test/built-ins/Atomics/wake/not-an-object-throws.js
+++ b/test/built-ins/Atomics/wake/not-an-object-throws.js
@@ -15,34 +15,34 @@ features: [Atomics, Symbol]
 
 var poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
 assert.throws(TypeError, function() {
   Atomics.wake(null, poisoned, poisoned);
-}, 'null');
+}, '`Atomics.wake(null, poisoned, poisoned)` throws TypeError');
 
 assert.throws(TypeError, function() {
   Atomics.wake(undefined, poisoned, poisoned);
-}, 'undefined');
+}, '`Atomics.wake(undefined, poisoned, poisoned)` throws TypeError');
 
 assert.throws(TypeError, function() {
   Atomics.wake(true, poisoned, poisoned);
-}, 'true');
+}, '`Atomics.wake(true, poisoned, poisoned)` throws TypeError');
 
 assert.throws(TypeError, function() {
   Atomics.wake(false, poisoned, poisoned);
-}, 'false');
+}, '`Atomics.wake(false, poisoned, poisoned)` throws TypeError');
 
 assert.throws(TypeError, function() {
   Atomics.wake('***string***', poisoned, poisoned);
-}, 'String');
+}, '`Atomics.wake(\'***string***\', poisoned, poisoned)` throws TypeError');
 
 assert.throws(TypeError, function() {
   Atomics.wake(Number.NEGATIVE_INFINITY, poisoned, poisoned);
-}, '-Infinity');
+}, '`Atomics.wake(Number.NEGATIVE_INFINITY, poisoned, poisoned)` throws TypeError');
 
 assert.throws(TypeError, function() {
   Atomics.wake(Symbol('***symbol***'), poisoned, poisoned);
-}, 'Symbol');
+}, '`Atomics.wake(Symbol(\'***symbol***\'), poisoned, poisoned)` throws TypeError');
diff --git a/test/built-ins/Atomics/wake/null-bufferdata-throws.js b/test/built-ins/Atomics/wake/null-bufferdata-throws.js
index fb3cf8ee4e..4d2300fd98 100644
--- a/test/built-ins/Atomics/wake/null-bufferdata-throws.js
+++ b/test/built-ins/Atomics/wake/null-bufferdata-throws.js
@@ -19,7 +19,7 @@ features: [ArrayBuffer, Atomics, TypedArray]
 var i32a = new Int32Array(new ArrayBuffer(1024));
 var poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
@@ -27,4 +27,4 @@ $DETACHBUFFER(i32a.buffer); // Detaching a non-shared ArrayBuffer sets the [[Arr
 
 assert.throws(TypeError, function() {
   Atomics.wake(i32a, poisoned, poisoned);
-});
+}, '`Atomics.wake(i32a, poisoned, poisoned)` throws TypeError');
diff --git a/test/built-ins/Atomics/wake/out-of-range-index-throws.js b/test/built-ins/Atomics/wake/out-of-range-index-throws.js
index a07c2bdeb4..bbc9f08387 100644
--- a/test/built-ins/Atomics/wake/out-of-range-index-throws.js
+++ b/test/built-ins/Atomics/wake/out-of-range-index-throws.js
@@ -19,16 +19,16 @@ features: [Atomics, SharedArrayBuffer, TypedArray]
 var i32a = new Int32Array(new SharedArrayBuffer(4));
 var poisoned = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
 assert.throws(RangeError, function() {
   Atomics.wake(i32a, Infinity, poisoned);
-});
+}, '`Atomics.wake(i32a, Infinity, poisoned)` throws RangeError');
 assert.throws(RangeError, function() {
   Atomics.wake(i32a, 2, poisoned);
-});
+}, '`Atomics.wake(i32a, 2, poisoned)` throws RangeError');
 assert.throws(RangeError, function() {
   Atomics.wake(i32a, 200, poisoned);
-});
+}, '`Atomics.wake(i32a, 200, poisoned)` throws RangeError');
diff --git a/test/built-ins/Atomics/wake/shared-nonint-views.js b/test/built-ins/Atomics/wake/shared-nonint-views.js
index 4259c3a7a1..911ff3c00b 100644
--- a/test/built-ins/Atomics/wake/shared-nonint-views.js
+++ b/test/built-ins/Atomics/wake/shared-nonint-views.js
@@ -14,7 +14,7 @@ var buffer = new SharedArrayBuffer(1024);
 testWithTypedArrayConstructors(function(TA) {
   assert.throws(TypeError, function() {
     Atomics.wake(new TA(buffer), 0, 0);
-  }, 'Atomics.wake(new TA(buffer), 0, 0) throws TypeError');
+  }, '`Atomics.wake(new TA(buffer), 0, 0)` throws TypeError');
 }, floatArrayConstructors);
 
 
diff --git a/test/built-ins/Atomics/wake/symbol-for-index-throws.js b/test/built-ins/Atomics/wake/symbol-for-index-throws.js
index 2fb0b470f0..723753f685 100644
--- a/test/built-ins/Atomics/wake/symbol-for-index-throws.js
+++ b/test/built-ins/Atomics/wake/symbol-for-index-throws.js
@@ -33,7 +33,7 @@ var i32a = new Int32Array(buffer);
 
 var poisonedValueOf = {
   valueOf: function() {
-    throw new Test262Error("should not evaluate this code");
+    throw new Test262Error('should not evaluate this code');
   }
 };
 
@@ -45,16 +45,16 @@ var poisonedToPrimitive = {
 
 assert.throws(Test262Error, function() {
   Atomics.wake(i32a, poisonedValueOf, poisonedValueOf);
-});
+}, '`Atomics.wake(i32a, poisonedValueOf, poisonedValueOf)` throws Test262Error');
 
 assert.throws(Test262Error, function() {
   Atomics.wake(i32a, poisonedToPrimitive, poisonedToPrimitive);
-});
+}, '`Atomics.wake(i32a, poisonedToPrimitive, poisonedToPrimitive)` throws Test262Error');
 
 assert.throws(TypeError, function() {
   Atomics.wake(i32a, Symbol("foo"), poisonedValueOf);
-});
+}, '`Atomics.wake(i32a, Symbol("foo"), poisonedValueOf)` throws TypeError');
 
 assert.throws(TypeError, function() {
   Atomics.wake(i32a, Symbol("foo"), poisonedToPrimitive);
-});
+}, '`Atomics.wake(i32a, Symbol("foo"), poisonedToPrimitive)` throws TypeError');
diff --git a/test/built-ins/Atomics/wake/undefined-index-defaults-to-zero.js b/test/built-ins/Atomics/wake/undefined-index-defaults-to-zero.js
index a6a3e68d02..3faf97b4dd 100644
--- a/test/built-ins/Atomics/wake/undefined-index-defaults-to-zero.js
+++ b/test/built-ins/Atomics/wake/undefined-index-defaults-to-zero.js
@@ -18,46 +18,46 @@ info: |
 
           If value is undefined, then
           Let index be 0.
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
-$262.agent.start(
-  `
-$262.agent.receiveBroadcast(function(sab) { 
-  var i32a = new Int32Array(sab);
-  $262.agent.report(Atomics.wait(i32a, 0, 0, 200));
-  $262.agent.leaving();
-})
-
-
-`)
+$262.agent.start(`
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    $262.agent.report(Atomics.wait(i32a, 0, 0, 200));
+    $262.agent.leaving();
+  });
+`);
 
-;$262.agent.start(
-  `
-$262.agent.receiveBroadcast(function(sab) { 
-  var i32a = new Int32Array(sab);
-  $262.agent.report(Atomics.wait(i32a, 0, 0, 200));
-  $262.agent.leaving();
-})
+$262.agent.start(`
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    $262.agent.report(Atomics.wait(i32a, 0, 0, 200));
+    $262.agent.leaving();
+  });
 `);
 
-var sab = new SharedArrayBuffer(4);
-var i32a = new Int32Array(sab);
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT);
+);
 
 $262.agent.broadcast(i32a.buffer);
-
 $262.agent.sleep(100); // halfway through timeout
 
-assert.sameValue(Atomics.wake(i32a, undefined, 1), 1); // wake at index 0
-assert.sameValue(getReport(), "ok");
-
-assert.sameValue(Atomics.wake(i32a), 1); // wake again at index 0
-assert.sameValue(getReport(), "ok");
-
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
+// wake at index 0
+assert.sameValue(
+  Atomics.wake(i32a, undefined, 1),
+  1,
+  'Atomics.wake(i32a, undefined, 1) returns 1'
+);
+assert.sameValue(getReport(), "ok", 'getReport() returns "ok"');
+
+
+// wake again at index 0
+assert.sameValue(
+  Atomics.wake(i32a /* default values used */),
+  1,
+  'Atomics.wake(i32a) returns 1'
+);
+assert.sameValue(getReport(), "ok", 'getReport() returns "ok"');
diff --git a/test/built-ins/Atomics/wake/wake-all-on-loc.js b/test/built-ins/Atomics/wake/wake-all-on-loc.js
index 3c94b89201..f319ef5f8f 100644
--- a/test/built-ins/Atomics/wake/wake-all-on-loc.js
+++ b/test/built-ins/Atomics/wake/wake-all-on-loc.js
@@ -6,38 +6,41 @@ esid: sec-atomics.wake
 description: >
   Test that Atomics.wake wakes all waiters on a location, but does not
   wake waiters on other locations.
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
-var WAKEUP = 0;                 // Waiters on this will be woken
-var DUMMY = 1;                  // Waiters on this will not be woken
-var RUNNING = 2;                // Accounting of live agents
-var NUMELEM = 3;
+const WAKEUP = 0;                 // Waiters on this will be woken
+const DUMMY = 1;                  // Waiters on this will not be woken
+const RUNNING = 2;                // Accounting of live agents
+const NUMELEM = 3;
 
-var NUMAGENT = 3;
+const NUMAGENT = 3;
 
 for (var i=0; i < NUMAGENT; i++) {
-$262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  Atomics.add(i32a, ${RUNNING}, 1);
-  $262.agent.report("A " + Atomics.wait(i32a, ${WAKEUP}, 0));
-  $262.agent.leaving();
-})
-`);
+  $262.agent.start(`
+    $262.agent.receiveBroadcast(function(sab) {
+      var i32a = new Int32Array(sab);
+      Atomics.add(i32a, ${RUNNING}, 1);
+      $262.agent.report("A " + Atomics.wait(i32a, ${WAKEUP}, 0));
+      $262.agent.leaving();
+    });
+  `);
 }
 
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  Atomics.add(i32a, ${RUNNING}, 1);
-  // This will always time out.
-  $262.agent.report("B " + Atomics.wait(i32a, ${DUMMY}, 0, 10));
-  $262.agent.leaving();
-})
+  $262.agent.receiveBroadcast(function(sab) {
+    var i32a = new Int32Array(sab);
+    Atomics.add(i32a, ${RUNNING}, 1);
+    // This will always time out.
+    $262.agent.report("B " + Atomics.wait(i32a, ${DUMMY}, 0, 10));
+    $262.agent.leaving();
+  });
 `);
 
-var i32a = new Int32Array(new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT));
+const i32a = new Int32Array(
+  new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT)
+);
 $262.agent.broadcast(i32a.buffer);
 
 // Wait for agents to be running.
@@ -48,32 +51,19 @@ waitUntil(i32a, RUNNING, NUMAGENT + 1);
 $262.agent.sleep(50);
 
 // Wake all waiting on WAKEUP, should be 3 always, they won't time out.
-assert.sameValue(Atomics.wake(i32a, WAKEUP), NUMAGENT);
+assert.sameValue(
+  Atomics.wake(i32a, WAKEUP),
+  NUMAGENT,
+  'Atomics.wake(i32a, WAKEUP) equals the value of `NUMAGENT` (3)'
+);
 
-var rs = [];
+const rs = [];
 for (var i = 0; i < NUMAGENT + 1; i++) {
   rs.push(getReport());
 }
 rs.sort();
 
 for (var i = 0; i < NUMAGENT; i++) {
-  assert.sameValue(rs[i], "A ok");
-}
-assert.sameValue(rs[NUMAGENT], "B timed-out");
-
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
-function waitUntil(i32a, k, value) {
-  var i = 0;
-  while (Atomics.load(i32a, k) !== value && i < 15) {
-    $262.agent.sleep(10);
-    i++;
-  }
-  assert.sameValue(Atomics.load(i32a, k), value, "All agents are running");
+  assert.sameValue(rs[i], "A ok", 'The value of rs[i] is "A ok"');
 }
+assert.sameValue(rs[NUMAGENT], "B timed-out", 'The value of rs[NUMAGENT] is "B timed-out"');
diff --git a/test/built-ins/Atomics/wake/wake-all.js b/test/built-ins/Atomics/wake/wake-all.js
index 25ef337015..ca6ebbacfd 100644
--- a/test/built-ins/Atomics/wake/wake-all.js
+++ b/test/built-ins/Atomics/wake/wake-all.js
@@ -5,35 +5,35 @@
 esid: sec-atomics.wake
 description: >
   Test that Atomics.wake wakes all waiters if that's what the count is.
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
-var WAKEUP = 0;                 // Waiters on this will be woken
-var DUMMY = 1;                  // Waiters on this will not be woken
-var RUNNING = 2;                // Accounting of live agents
-var NUMELEM = 3;
-
-var NUMAGENT = 3;
+const WAKEUP = 0;                 // Waiters on this will be woken
+const DUMMY = 1;                  // Waiters on this will not be woken
+const RUNNING = 2;                // Accounting of live agents
+const NUMELEM = 3;
+const NUMAGENT = 3;
 
 for (var i=0; i < NUMAGENT; i++) {
-$262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  Atomics.add(i32a, ${RUNNING}, 1);
-  $262.agent.report("A " + Atomics.wait(i32a, ${WAKEUP}, 0));
-  $262.agent.leaving();
-})
-`);
+  $262.agent.start(`
+    $262.agent.receiveBroadcast(function(sab) {
+      var i32a = new Int32Array(sab);
+      Atomics.add(i32a, ${RUNNING}, 1);
+      $262.agent.report("A " + Atomics.wait(i32a, ${WAKEUP}, 0));
+      $262.agent.leaving();
+    });
+  `);
 }
 
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  Atomics.add(i32a, ${RUNNING}, 1);
-  // This will always time out.
-  $262.agent.report("B " + Atomics.wait(i32a, ${DUMMY}, 0, 10));
-  $262.agent.leaving();
-})
+  $262.agent.receiveBroadcast(function(sab) {
+    var i32a = new Int32Array(sab);
+    Atomics.add(i32a, ${RUNNING}, 1);
+    // This will always time out.
+    $262.agent.report("B " + Atomics.wait(i32a, ${DUMMY}, 0, 10));
+    $262.agent.leaving();
+  });
 `);
 
 var i32a = new Int32Array(new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT));
@@ -47,32 +47,19 @@ waitUntil(i32a, RUNNING, NUMAGENT + 1);
 $262.agent.sleep(50);
 
 // Wake all waiting on WAKEUP, should be 3 always, they won't time out.
-assert.sameValue(Atomics.wake(i32a, WAKEUP), NUMAGENT);
+assert.sameValue(
+  Atomics.wake(i32a, WAKEUP),
+  NUMAGENT,
+  'Atomics.wake(i32a, WAKEUP) equals the value of `NUMAGENT` (3)'
+);
 
-var rs = [];
+const rs = [];
 for (var i = 0; i < NUMAGENT + 1; i++) {
   rs.push(getReport());
 }
 rs.sort();
 
 for (var i = 0; i < NUMAGENT; i++) {
-  assert.sameValue(rs[i], "A ok");
-}
-assert.sameValue(rs[NUMAGENT], "B timed-out");
-
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
-function waitUntil(i32a, k, value) {
-  var i = 0;
-  while (Atomics.load(i32a, k) !== value && i < 15) {
-    $262.agent.sleep(10);
-    i++;
-  }
-  assert.sameValue(Atomics.load(i32a, k), value, "All agents are running");
+  assert.sameValue(rs[i], "A ok", 'The value of rs[i] is "A ok"');
 }
+assert.sameValue(rs[NUMAGENT], "B timed-out", 'The value of rs[NUMAGENT] is "B timed-out"');
diff --git a/test/built-ins/Atomics/wake/wake-in-order.js b/test/built-ins/Atomics/wake/wake-in-order.js
index 60d00dc9d2..36174a310e 100644
--- a/test/built-ins/Atomics/wake/wake-in-order.js
+++ b/test/built-ins/Atomics/wake/wake-in-order.js
@@ -5,34 +5,36 @@
 esid: sec-atomics.wake
 description: >
   Test that Atomics.wake wakes agents in the order they are waiting.
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
-var NUMAGENT = 3;
-
-var WAKEUP = 0;                 // Waiters on this will be woken
-var SPIN = 1;                   // Worker i (zero-based) spins on location SPIN+i
-var RUNNING = SPIN + NUMAGENT;  // Accounting of live agents
-var NUMELEM = RUNNING + 1;
+const NUMAGENT = 3;
+const WAKEUP = 0;                 // Waiters on this will be woken
+const SPIN = 1;                   // Worker i (zero-based) spins on location SPIN+i
+const RUNNING = SPIN + NUMAGENT;  // Accounting of live agents
+const NUMELEM = RUNNING + 1;
 
 // Create workers and start them all spinning.  We set atomic slots to make
 // them go into a wait, thus controlling the waiting order.  Then we wake them
 // one by one and observe the wakeup order.
 
 for (var i = 0; i < NUMAGENT; i++) {
-$262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  Atomics.add(i32a, ${RUNNING}, 1);
-  while (Atomics.load(i32a, ${SPIN + i}) === 0)
-      /* nothing */ ;
-  $262.agent.report(${i} + Atomics.wait(i32a, ${WAKEUP}, 0));
-  $262.agent.leaving();
-});
-`);
+  $262.agent.start(`
+    $262.agent.receiveBroadcast(function(sab) {
+      var i32a = new Int32Array(sab);
+      Atomics.add(i32a, ${RUNNING}, 1);
+      while (Atomics.load(i32a, ${SPIN + i}) === 0)
+          /* nothing */ ;
+      $262.agent.report(${i} + Atomics.wait(i32a, ${WAKEUP}, 0));
+      $262.agent.leaving();
+    });
+  `);
 }
 
-var i32a = new Int32Array(new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT));
+const i32a = new Int32Array(
+  new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT)
+);
 $262.agent.broadcast(i32a.buffer);
 
 // Wait for agents to be running.
@@ -50,23 +52,6 @@ for (var i = 0; i < NUMAGENT; i++) {
 
 // Wake them up one at a time and check the order is 0 1 2
 for (var i = 0; i < NUMAGENT; i++) {
-  assert.sameValue(Atomics.wake(i32a, WAKEUP, 1), 1);
-  assert.sameValue(getReport(), i + "ok");
-}
-
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
-function waitUntil(i32a, k, value) {
-  var i = 0;
-  while (Atomics.load(i32a, k) !== value && i < 15) {
-    $262.agent.sleep(10);
-    i++;
-  }
-  assert.sameValue(Atomics.load(i32a, k), value, 'All agents are running');
+  assert.sameValue(Atomics.wake(i32a, WAKEUP, 1), 1, 'Atomics.wake(i32a, WAKEUP, 1) returns 1');
+  assert.sameValue(getReport(), i + "ok", 'getReport() returns i + "ok"');
 }
diff --git a/test/built-ins/Atomics/wake/wake-nan.js b/test/built-ins/Atomics/wake/wake-nan.js
index 14c47d69ce..3625ef5c8f 100644
--- a/test/built-ins/Atomics/wake/wake-nan.js
+++ b/test/built-ins/Atomics/wake/wake-nan.js
@@ -5,28 +5,23 @@
 esid: sec-atomics.wake
 description: >
   Test that Atomics.wake wakes zero waiters if the count is NaN
+includes: [testAtomics.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var i32a = new Int32Array(sab);
-  $262.agent.report(Atomics.wait(i32a, 0, 0, 1000)); // We will timeout eventually
-  $262.agent.leaving();
-})
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    $262.agent.report(Atomics.wait(i32a, 0, 0, 1000)); // We will timeout eventually
+    $262.agent.leaving();
+  });
 `);
 
-var i32a = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
+const i32a = new Int32Array(
+  new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)
+);
 
 $262.agent.broadcast(i32a.buffer);
 $262.agent.sleep(500); // Give the agent a chance to wait
-assert.sameValue(Atomics.wake(i32a, 0, NaN), 0); // Don't actually wake it
-assert.sameValue(getReport(), "timed-out");
-
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
+assert.sameValue(Atomics.wake(i32a, 0, NaN), 0, 'Atomics.wake(i32a, 0, NaN) returns 0'); // Don't actually wake it
+assert.sameValue(getReport(), "timed-out", 'getReport() returns "timed-out"');
diff --git a/test/built-ins/Atomics/wake/wake-one.js b/test/built-ins/Atomics/wake/wake-one.js
index 844546ff57..49fea9399e 100644
--- a/test/built-ins/Atomics/wake/wake-one.js
+++ b/test/built-ins/Atomics/wake/wake-one.js
@@ -5,34 +5,35 @@
 esid: sec-atomics.wake
 description: >
   Test that Atomics.wake wakes one waiter if that's what the count is.
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
-var NUMAGENT = 3;
-
-var WAKEUP = 0;                 // Agents wait here
-var RUNNING = 1;                // Accounting of live agents here
-var NUMELEM = 2;
-
-var WAKECOUNT = 1;
-
-for ( var i=0 ; i < NUMAGENT ; i++ ) {
-$262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var ia = new Int32Array(sab);
-  Atomics.add(ia, ${RUNNING}, 1);
-  // Waiters that are not woken will time out eventually.
-  $262.agent.report(Atomics.wait(ia, ${WAKEUP}, 0, 2000));
-  $262.agent.leaving();
-})
-`);
+const NUMAGENT = 3;
+const WAKEUP = 0;                 // Agents wait here
+const RUNNING = 1;                // Accounting of live agents here
+const NUMELEM = 2;
+const WAKECOUNT = 1;
+
+for (var i = 0; i < NUMAGENT; i++ ) {
+  $262.agent.start(`
+    $262.agent.receiveBroadcast(function(sab) {
+      var i32a = new Int32Array(sab);
+      Atomics.add(i32a, ${RUNNING}, 1);
+      // Waiters that are not woken will time out eventually.
+      $262.agent.report(Atomics.wait(i32a, ${WAKEUP}, 0, 2000));
+      $262.agent.leaving();
+    });
+  `);
 }
 
-var ia = new Int32Array(new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT));
-$262.agent.broadcast(ia.buffer);
+const i32a = new Int32Array(
+  new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT)
+);
+$262.agent.broadcast(i32a.buffer);
 
 // Wait for agents to be running.
-waitUntil(ia, RUNNING, NUMAGENT);
+waitUntil(i32a, RUNNING, NUMAGENT);
 
 // Then wait some more to give the agents a fair chance to wait.  If we don't,
 // we risk sending the wakeup before agents are sleeping, and we hang.
@@ -41,35 +42,22 @@ $262.agent.sleep(50);
 // There's a slight risk we'll fail to wake the desired count, if the preceding
 // sleep() took much longer than anticipated and workers have started timing
 // out.
-assert.sameValue(Atomics.wake(ia, 0, WAKECOUNT), WAKECOUNT);
+assert.sameValue(
+  Atomics.wake(i32a, 0, WAKECOUNT),
+  WAKECOUNT,
+  'Atomics.wake(i32a, 0, WAKECOUNT) equals the value of `WAKECOUNT` (1)'
+);
 
 // Collect and check results
-var rs = [];
+const rs = [];
 for (var i = 0; i < NUMAGENT; i++) {
   rs.push(getReport());
 }
 rs.sort();
 
 for (var i = 0; i < WAKECOUNT; i++) {
-  assert.sameValue(rs[i], "ok");
+  assert.sameValue(rs[i], 'ok', 'The value of rs[i] is "ok"');
 }
 for (var i = WAKECOUNT; i < NUMAGENT; i++) {
-  assert.sameValue(rs[i], "timed-out");
-}
-
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
-function waitUntil(ia, k, value) {
-  var i = 0;
-  while (Atomics.load(ia, k) !== value && i < 15) {
-    $262.agent.sleep(10);
-    i++;
-  }
-  assert.sameValue(Atomics.load(ia, k), value, "All agents are running");
+  assert.sameValue(rs[i], 'timed-out', 'The value of rs[i] is "timed-out"');
 }
diff --git a/test/built-ins/Atomics/wake/wake-rewake-noop.js b/test/built-ins/Atomics/wake/wake-rewake-noop.js
index 9c6362e34a..3f5e6cbc0f 100644
--- a/test/built-ins/Atomics/wake/wake-rewake-noop.js
+++ b/test/built-ins/Atomics/wake/wake-rewake-noop.js
@@ -5,49 +5,36 @@
 esid: sec-atomics.wake
 description: >
   Test that Atomics.wake on awoken waiter is a noop.
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
-function waitUntil(ia, k, value) {
-  var i = 0;
-  while (Atomics.load(ia, k) !== value && i < 15) {
-    $262.agent.sleep(10);
-    i++;
-  }
-  assert.sameValue(Atomics.load(ia, k), value, "All agents are running");
-}
-
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var ia = new Int32Array(sab);
-  Atomics.add(ia, 1, 1);
-  $262.agent.report(Atomics.wait(ia, 0, 0, 2000));
-  $262.agent.leaving();
-})
+  $262.agent.receiveBroadcast(function(sab) {
+    var i32a = new Int32Array(sab);
+    Atomics.add(i32a, 1, 1);
+    $262.agent.report(Atomics.wait(i32a, 0, 0, 2000));
+    $262.agent.leaving();
+  });
 `);
 
-var ia = new Int32Array(new SharedArrayBuffer(2 * Int32Array.BYTES_PER_ELEMENT));
-$262.agent.broadcast(ia.buffer);
+var i32a = new Int32Array(
+  new SharedArrayBuffer(2 * Int32Array.BYTES_PER_ELEMENT)
+);
+
+$262.agent.broadcast(i32a.buffer);
 
-waitUntil(ia, 1, 1);
+waitUntil(i32a, 1, 1);
 
-assert.sameValue(Atomics.wake(ia, 0, 1), 1);
+assert.sameValue(Atomics.wake(i32a, 0, 1), 1, 'Atomics.wake(i32a, 0, 1) returns 1');
 
 $262.agent.sleep(10);
 
 // Collect and check results
 var report = getReport();
 
-assert.sameValue(report, "ok");
+assert.sameValue(report, 'ok', 'The value of `report` is "ok"');
 
 // Already awake, this should be a noop
-assert.sameValue(Atomics.wake(ia, 0, 1), 0);
+assert.sameValue(Atomics.wake(i32a, 0, 1), 0, 'Atomics.wake(i32a, 0, 1) returns 0');
 
diff --git a/test/built-ins/Atomics/wake/wake-two.js b/test/built-ins/Atomics/wake/wake-two.js
index b76c5f6933..a8544684d3 100644
--- a/test/built-ins/Atomics/wake/wake-two.js
+++ b/test/built-ins/Atomics/wake/wake-two.js
@@ -5,35 +5,36 @@
 esid: sec-atomics.wake
 description: >
   Test that Atomics.wake wakes two waiters if that's what the count is.
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
 
 var NUMAGENT = 3;
-
 var WAKEUP = 0;                 // Agents wait here
 var RUNNING = 1;                // Accounting of live agents here
 var NUMELEM = 2;
-
 var WAKECOUNT = 2;
 
 for ( var i=0 ; i < NUMAGENT ; i++ ) {
-$262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var ia = new Int32Array(sab);
-  Atomics.add(ia, ${RUNNING}, 1);
-  // Waiters that are not woken will time out eventually.
-  $262.agent.report(Atomics.wait(ia, ${WAKEUP}, 0, 2000));
-  $262.agent.leaving();
-})
-`);
+  $262.agent.start(`
+    $262.agent.receiveBroadcast(function(sab) {
+      var i32a = new Int32Array(sab);
+      Atomics.add(i32a, ${RUNNING}, 1);
+      // Waiters that are not woken will time out eventually.
+      $262.agent.report(Atomics.wait(i32a, ${WAKEUP}, 0, 2000));
+      $262.agent.leaving();
+    })
+  `);
 }
 
-var ia = new Int32Array(new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT));
-$262.agent.broadcast(ia.buffer);
+var i32a = new Int32Array(
+  new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT)
+);
+$262.agent.broadcast(i32a.buffer);
 
 // Wait for agents to be running.
-waitUntil(ia, RUNNING, NUMAGENT);
+waitUntil(i32a, RUNNING, NUMAGENT);
 
 // Then wait some more to give the agents a fair chance to wait.  If we don't,
 // we risk sending the wakeup before agents are sleeping, and we hang.
@@ -42,7 +43,11 @@ $262.agent.sleep(500);
 // There's a slight risk we'll fail to wake the desired count, if the preceding
 // sleep() took much longer than anticipated and workers have started timing
 // out.
-assert.sameValue(Atomics.wake(ia, 0, WAKECOUNT), WAKECOUNT);
+assert.sameValue(
+  Atomics.wake(i32a, 0, WAKECOUNT),
+  WAKECOUNT,
+  'Atomics.wake(i32a, 0, WAKECOUNT) equals the value of `WAKECOUNT` (2)'
+);
 
 // Collect and check results
 var rs = [];
@@ -52,25 +57,9 @@ for (var i = 0; i < NUMAGENT; i++) {
 rs.sort();
 
 for (var i = 0; i < WAKECOUNT; i++) {
-  assert.sameValue(rs[i], "ok");
+  assert.sameValue(rs[i], 'ok', 'The value of rs[i] is "ok"');
 }
 for (var i = WAKECOUNT; i < NUMAGENT; i++) {
-  assert.sameValue(rs[i], "timed-out");
+  assert.sameValue(rs[i], 'timed-out', 'The value of rs[i] is "timed-out"');
 }
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
-function waitUntil(ia, k, value) {
-  var i = 0;
-  while (Atomics.load(ia, k) !== value && i < 15) {
-    $262.agent.sleep(100);
-    i++;
-  }
-  assert.sameValue(Atomics.load(ia, k), value, "All agents are running");
-}
diff --git a/test/built-ins/Atomics/wake/wake-with-no-agents-waiting.js b/test/built-ins/Atomics/wake/wake-with-no-agents-waiting.js
index b791ef7b26..55357c6887 100644
--- a/test/built-ins/Atomics/wake/wake-with-no-agents-waiting.js
+++ b/test/built-ins/Atomics/wake/wake-with-no-agents-waiting.js
@@ -5,31 +5,25 @@
 esid: sec-atomics.wake
 description: >
   Test that Atomics.wake wakes zero waiters if there are no agents waiting.
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
 
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var ia = new Int32Array(sab);
-  Atomics.add(ia, 1, 1);
-  $262.agent.leaving();
-})
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    Atomics.add(i32a, 1, 1);
+    $262.agent.leaving();
+  });
 `);
 
-var ia = new Int32Array(new SharedArrayBuffer(2 * Int32Array.BYTES_PER_ELEMENT));
-$262.agent.broadcast(ia.buffer);
+var i32a = new Int32Array(
+  new SharedArrayBuffer(2 * Int32Array.BYTES_PER_ELEMENT)
+);
+$262.agent.broadcast(i32a.buffer);
 
-waitUntil(ia, 1);
+waitUntil(i32a, 1, 1);
 
 // There are ZERO agents waiting to wake...
-assert.sameValue(Atomics.wake(ia, 0, 1), 0);
-
-function waitUntil(ia, k) {
-  var i = 0;
-  while (Atomics.load(ia, k) !== 1 && i < 15) {
-    $262.agent.sleep(100);
-    i++;
-  }
-  assert.sameValue(Atomics.load(ia, k), 1, "All agents are running");
-}
+assert.sameValue(Atomics.wake(i32a, 0, 1), 0, 'Atomics.wake(i32a, 0, 1) returns 0');
diff --git a/test/built-ins/Atomics/wake/wake-with-no-matching-agents-waiting.js b/test/built-ins/Atomics/wake/wake-with-no-matching-agents-waiting.js
index 9622bb67a2..b9e68f6225 100644
--- a/test/built-ins/Atomics/wake/wake-with-no-matching-agents-waiting.js
+++ b/test/built-ins/Atomics/wake/wake-with-no-matching-agents-waiting.js
@@ -6,31 +6,33 @@ esid: sec-atomics.wake
 description: >
   Test that Atomics.wake wakes zero waiters if there are no agents that match
   its arguments waiting.
+includes: [testAtomics.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
 
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var ia = new Int32Array(sab);
-  Atomics.add(ia, 1, 1);
-  $262.agent.leaving();
-})
+  $262.agent.receiveBroadcast(function(sab) {
+    const i32a = new Int32Array(sab);
+    Atomics.add(i32a, 1, 1);
+    $262.agent.leaving();
+  });
 `);
 
-var ia = new Int32Array(new SharedArrayBuffer(2 * Int32Array.BYTES_PER_ELEMENT));
-$262.agent.broadcast(ia.buffer);
+var i32a = new Int32Array(new SharedArrayBuffer(2 * Int32Array.BYTES_PER_ELEMENT));
+$262.agent.broadcast(i32a.buffer);
 
-waitUntil(ia, 1);
+waitUntil(i32a, 1, 1);
 
 // There are ZERO matching agents...
-assert.sameValue(Atomics.wake(ia, 1, 1), 0);
+assert.sameValue(Atomics.wake(i32a, 1, 1), 0, 'Atomics.wake(i32a, 1, 1) returns 0');
 
-function waitUntil(ia, k) {
+function waitUntil(i32a, index, numberOfAgentsExpected) {
   var i = 0;
-  while (Atomics.load(ia, k) !== 1 && i < 15) {
-    $262.agent.sleep(100);
+  while (Atomics.load(i32a, index) !== numberOfAgentsExpected && i < 15) {
+    $262.agent.sleep(10);
     i++;
   }
-  assert.sameValue(Atomics.load(ia, k), 1, "All agents are running");
+  const numberOfAgentsReady = Atomics.load(i32a, index);
+  assert.sameValue(numberOfAgentsReady, numberOfAgentsExpected, `'numberOfAgentsReady' equals the value of numberOfAgentsExpected (${numberOfAgentsExpected})`);
 }
diff --git a/test/built-ins/Atomics/wake/wake-zero.js b/test/built-ins/Atomics/wake/wake-zero.js
index b32134ba64..7e6d85bf04 100644
--- a/test/built-ins/Atomics/wake/wake-zero.js
+++ b/test/built-ins/Atomics/wake/wake-zero.js
@@ -5,6 +5,7 @@
 esid: sec-atomics.wake
 description: >
   Test that Atomics.wake wakes zero waiters if that's what the count is.
+includes: [atomicsHelper.js]
 features: [Atomics, SharedArrayBuffer, TypedArray]
 ---*/
 
@@ -12,26 +13,29 @@ var NUMAGENT = 3;
 var WAKEUP = 0;                 // Agents wait here
 var RUNNING = 1;                // Accounting of live agents here
 var NUMELEM = 2;
-
 var WAKECOUNT = 0;
 
-for ( var i=0 ; i < NUMAGENT ; i++ ) {
+for (var i = 0; i < NUMAGENT; i++) {
 $262.agent.start(`
-$262.agent.receiveBroadcast(function(sab) {
-  var ia = new Int32Array(sab);
-  Atomics.add(ia, ${RUNNING}, 1);
-  // Waiters that are not woken will time out eventually.
-  $262.agent.report(Atomics.wait(ia, ${WAKEUP}, 0, 200));
-  $262.agent.leaving();
-})
+  $262.agent.receiveBroadcast(function(sab) {
+    var i32a = new Int32Array(sab);
+    Atomics.add(i32a, ${RUNNING}, 1);
+    // Waiters that are not woken will time out eventually.
+    $262.agent.report(Atomics.wait(i32a, ${WAKEUP}, 0, 200));
+    $262.agent.leaving();
+  });
 `);
 }
 
-var ia = new Int32Array(new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT));
-$262.agent.broadcast(ia.buffer);
+const i32a = new Int32Array(
+  new SharedArrayBuffer(NUMELEM * Int32Array.BYTES_PER_ELEMENT)
+);
+
+$262.agent.broadcast(i32a.buffer);
+
 
 // Wait for agents to be running.
-waitUntil(ia, RUNNING, NUMAGENT);
+waitUntil(i32a, RUNNING, NUMAGENT);
 
 // Then wait some more to give the agents a fair chance to wait.  If we don't,
 // we risk sending the wakeup before agents are sleeping, and we hang.
@@ -40,7 +44,11 @@ $262.agent.sleep(50);
 // There's a slight risk we'll fail to wake the desired count, if the preceding
 // sleep() took much longer than anticipated and workers have started timing
 // out.
-assert.sameValue(Atomics.wake(ia, 0, WAKECOUNT), WAKECOUNT);
+assert.sameValue(
+  Atomics.wake(i32a, 0, WAKECOUNT),
+  WAKECOUNT,
+  'Atomics.wake(i32a, 0, WAKECOUNT) equals the value of `WAKECOUNT` (0)'
+);
 
 // Collect and check results
 var rs = [];
@@ -50,25 +58,9 @@ for (var i = 0; i < NUMAGENT; i++) {
 rs.sort();
 
 for (var i = 0; i < WAKECOUNT; i++) {
-  assert.sameValue(rs[i], "ok", "The value of rs[i] is ok");
+  assert.sameValue(rs[i], 'ok', 'The value of rs[i] is "ok"');
 }
 for (var i = WAKECOUNT; i < NUMAGENT; i++) {
-  assert.sameValue(rs[i], "timed-out", "The value of rs[i] is timed-out");
+  assert.sameValue(rs[i], 'timed-out', 'The value of rs[i] is "timed-out"');
 }
 
-function getReport() {
-  var r;
-  while ((r = $262.agent.getReport()) == null) {
-    $262.agent.sleep(10);
-  }
-  return r;
-}
-
-function waitUntil(ia, k, value) {
-  var i = 0;
-  while (Atomics.load(ia, k) !== value && i < 15) {
-    $262.agent.sleep(10);
-    i++;
-  }
-  assert.sameValue(Atomics.load(ia, k), value, "Atomics.load(ia, k) returns value (All agents are running)");
-}
-- 
GitLab