diff --git a/benchmark/http/http_server_for_chunky_client.js b/benchmark/http/http_server_for_chunky_client.js
index bdeb517344d47d..3b0ec21cbe32a6 100644
--- a/benchmark/http/http_server_for_chunky_client.js
+++ b/benchmark/http/http_server_for_chunky_client.js
@@ -5,7 +5,7 @@ var http = require('http');
var fs = require('fs');
var fork = require('child_process').fork;
var common = require('../common.js');
-var test = require('../../test/common.js');
+var test = require('../../test/common');
var pep = `${path.dirname(process.argv[1])}/_chunky_http_client.js`;
var PIPE = test.PIPE;
diff --git a/test/README.md b/test/README.md
index 5a35a039c5844c..af81573f582d99 100644
--- a/test/README.md
+++ b/test/README.md
@@ -1,6 +1,6 @@
# Node.js Core Tests
-This folder contains code and data used to test the Node.js implementation.
+This directory contains code and data used to test the Node.js implementation.
For a detailed guide on how to write tests in this
directory, see [the guide on writing tests](../doc/guides/writing-tests.md).
@@ -8,11 +8,6 @@ directory, see [the guide on writing tests](../doc/guides/writing-tests.md).
On how to run tests in this direcotry, see
[the contributing guide](../CONTRIBUTING.md#step-5-test).
-## Table of Contents
-
-* [Test directories](#test-directories)
-* [Common module API](#common-module-api)
-
## Test Directories
@@ -48,6 +43,14 @@ On how to run tests in this direcotry, see
C++ test that is run as part of the build process.
+
+ common |
+ |
+
+ Common modules shared among many tests.
+ [Documentation]
+ |
+
debugger |
No |
@@ -158,277 +161,3 @@ On how to run tests in this direcotry, see
-
-## Common module API
-
-The common.js module is used by tests for consistency across repeated
-tasks. It has a number of helpful functions and properties to help with
-writing tests.
-
-### allowGlobals(...whitelist)
-* `whitelist` [<Array>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) Array of Globals
-* return [<Array>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)
-
-Takes `whitelist` and concats that with predefined `knownGlobals`.
-
-### arrayStream
-A stream to push an array into a REPL
-
-### busyLoop(time)
-* `time` [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type)
-
-Blocks for `time` amount of time.
-
-### canCreateSymLink
-API to indicate whether the current running process can create
-symlinks. On Windows, this returns false if the process running
-doesn't have privileges to create symlinks (specifically
-[SeCreateSymbolicLinkPrivilege](https://msdn.microsoft.com/en-us/library/windows/desktop/bb530716(v=vs.85).aspx)).
-On non-Windows platforms, this currently returns true.
-
-### crashOnUnhandledRejection()
-
-Installs a `process.on('unhandledRejection')` handler that crashes the process
-after a tick. This is useful for tests that use Promises and need to make sure
-no unexpected rejections occur, because currently they result in silent
-failures.
-
-### ddCommand(filename, kilobytes)
-* return [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)
-
-Platform normalizes the `dd` command
-
-### enoughTestMem
-* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
-
-Check if there is more than 1gb of total memory.
-
-### expectsError(settings)
-* `settings` [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)
- with the following optional properties:
- * `code` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
- expected error must have this value for its `code` property
- * `type` [<Function>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function)
- expected error must be an instance of `type`
- * `message` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
- or [<RegExp>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp)
- if a string is provided for `message`, expected error must have it for its
- `message` property; if a regular expression is provided for `message`, the
- regular expression must match the `message` property of the expected error
-
-* return function suitable for use as a validation function passed as the second
- argument to `assert.throws()`
-
-The expected error should be [subclassed by the `internal/errors` module](https://github.com/nodejs/node/blob/master/doc/guides/using-internal-errors.md#api).
-
-### expectWarning(name, expected)
-* `name` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
-* `expected` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | [<Array>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)
-
-Tests whether `name` and `expected` are part of a raised warning.
-
-## getArrayBufferViews(buf)
-* `buf` [<Buffer>](https://nodejs.org/api/buffer.html#buffer_class_buffer)
-* return [<ArrayBufferView[]>](https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView)
-
-Returns an instance of all possible `ArrayBufferView`s of the provided Buffer.
-
-### hasCrypto
-* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
-
-Checks for 'openssl'.
-
-### hasFipsCrypto
-* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
-
-Checks `hasCrypto` and `crypto` with fips.
-
-### hasIPv6
-* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
-
-Checks whether `IPv6` is supported on this platform.
-
-### hasMultiLocalhost
-* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
-
-Checks if there are multiple localhosts available.
-
-### fileExists(pathname)
-* pathname [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
-* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
-
-Checks if `pathname` exists
-
-### fixturesDir
-* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
-
-Path to the 'fixtures' directory.
-
-### globalCheck
-* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
-
-Turn this off if the test should not check for global leaks.
-
-### inFreeBSDJail
-* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
-
-Checks whether free BSD Jail is true or false.
-
-### isAix
-* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
-
-Platform check for Advanced Interactive eXecutive (AIX).
-
-### isAlive(pid)
-* `pid` [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type)
-* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
-
-Attempts to 'kill' `pid`
-
-### isFreeBSD
-* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
-
-Platform check for Free BSD.
-
-### isLinux
-* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
-
-Platform check for Linux.
-
-### isLinuxPPCBE
-* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
-
-Platform check for Linux on PowerPC.
-
-### isOSX
-* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
-
-Platform check for macOS.
-
-### isSunOS
-* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
-
-Platform check for SunOS.
-
-### isWindows
-* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
-
-Platform check for Windows.
-
-### isWOW64
-* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
-
-Platform check for Windows 32-bit on Windows 64-bit.
-
-### leakedGlobals
-* return [<Array>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)
-
-Checks whether any globals are not on the `knownGlobals` list.
-
-### localhostIPv4
-* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
-
-Gets IP of localhost
-
-### localIPv6Hosts
-* return [<Array>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)
-
-Array of IPV6 hosts.
-
-### mustCall([fn][, expected])
-* fn [<Function>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function)
-* expected [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) default = 1
-* return [<Function>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function)
-
-Returns a function that calls `fn`. If the returned function has not been called
-exactly `expected` number of times when the test is complete, then the test will
-fail.
-
-If `fn` is not provided, `common.noop` will be used.
-
-### nodeProcessAborted(exitCode, signal)
-* `exitCode` [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type)
-* `signal` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
-* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
-
-Returns `true` if the exit code `exitCode` and/or signal name `signal` represent the exit code and/or signal name of a node process that aborted, `false` otherwise.
-
-### noop
-
-A non-op `Function` that can be used for a variety of scenarios.
-
-For instance,
-
-
-```js
-const common = require('../common');
-
-someAsyncAPI('foo', common.mustCall(common.noop));
-```
-
-### opensslCli
-* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
-
-Checks whether 'opensslCli' is supported.
-
-### platformTimeout(ms)
-* `ms` [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type)
-* return [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type)
-
-Platform normalizes timeout.
-
-### PIPE
-* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
-
-Path to the test sock.
-
-### PORT
-* return [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) default = `12346`
-
-Port tests are running on.
-
-### refreshTmpDir
-* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
-
-Deletes the 'tmp' dir and recreates it
-
-### rootDir
-* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
-
-Path to the 'root' directory. either `/` or `c:\\` (windows)
-
-### skip(msg)
-* `msg` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
-
-Logs '1..0 # Skipped: ' + `msg`
-
-### spawnPwd(options)
-* `options` [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)
-* return [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)
-
-Platform normalizes the `pwd` command.
-
-### spawnSyncPwd(options)
-* `options` [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)
-* return [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)
-
-Synchronous version of `spawnPwd`.
-
-### tmpDir
-* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
-
-The realpath of the 'tmp' directory.
-
-### tmpDirName
-* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
-
-Name of the temp directory used by tests.
-
-### WPT
-
-A port of parts of
-[W3C testharness.js](https://github.com/w3c/testharness.js) for testing the
-Node.js
-[WHATWG URL API](https://nodejs.org/api/url.html#url_the_whatwg_url_api)
-implementation with tests from
-[W3C Web Platform Tests](https://github.com/w3c/web-platform-tests).
diff --git a/test/common/README.md b/test/common/README.md
new file mode 100644
index 00000000000000..267d28140c5003
--- /dev/null
+++ b/test/common/README.md
@@ -0,0 +1,281 @@
+# Node.js Core Test Common Modules
+
+This directory contains modules used to test the Node.js implementation.
+
+## Table of Contents
+
+* [Common module API](#common-module-api)
+* [WPT module](#wpt-module)
+
+## Common Module API
+
+The `common` module is used by tests for consistency across repeated
+tasks.
+
+### allowGlobals(...whitelist)
+* `whitelist` [<Array>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) Array of Globals
+* return [<Array>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)
+
+Takes `whitelist` and concats that with predefined `knownGlobals`.
+
+### arrayStream
+A stream to push an array into a REPL
+
+### busyLoop(time)
+* `time` [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type)
+
+Blocks for `time` amount of time.
+
+### canCreateSymLink
+API to indicate whether the current running process can create
+symlinks. On Windows, this returns false if the process running
+doesn't have privileges to create symlinks (specifically
+[SeCreateSymbolicLinkPrivilege](https://msdn.microsoft.com/en-us/library/windows/desktop/bb530716(v=vs.85).aspx)).
+On non-Windows platforms, this currently returns true.
+
+### crashOnUnhandledRejection()
+
+Installs a `process.on('unhandledRejection')` handler that crashes the process
+after a tick. This is useful for tests that use Promises and need to make sure
+no unexpected rejections occur, because currently they result in silent
+failures.
+
+### ddCommand(filename, kilobytes)
+* return [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)
+
+Platform normalizes the `dd` command
+
+### enoughTestMem
+* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
+
+Check if there is more than 1gb of total memory.
+
+### expectsError(settings)
+* `settings` [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)
+ with the following optional properties:
+ * `code` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
+ expected error must have this value for its `code` property
+ * `type` [<Function>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function)
+ expected error must be an instance of `type`
+ * `message` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
+ or [<RegExp>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp)
+ if a string is provided for `message`, expected error must have it for its
+ `message` property; if a regular expression is provided for `message`, the
+ regular expression must match the `message` property of the expected error
+
+* return function suitable for use as a validation function passed as the second
+ argument to `assert.throws()`
+
+The expected error should be [subclassed by the `internal/errors` module](https://github.com/nodejs/node/blob/master/doc/guides/using-internal-errors.md#api).
+
+### expectWarning(name, expected)
+* `name` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
+* `expected` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | [<Array>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)
+
+Tests whether `name` and `expected` are part of a raised warning.
+
+### fileExists(pathname)
+* pathname [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
+* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
+
+Checks if `pathname` exists
+
+### fixturesDir
+* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
+
+Path to the 'fixtures' directory.
+
+### getArrayBufferViews(buf)
+* `buf` [<Buffer>](https://nodejs.org/api/buffer.html#buffer_class_buffer)
+* return [<ArrayBufferView[]>](https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView)
+
+Returns an instance of all possible `ArrayBufferView`s of the provided Buffer.
+
+### globalCheck
+* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
+
+Turn this off if the test should not check for global leaks.
+
+### hasCrypto
+* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
+
+Checks for 'openssl'.
+
+### hasFipsCrypto
+* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
+
+Checks `hasCrypto` and `crypto` with fips.
+
+### hasIPv6
+* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
+
+Checks whether `IPv6` is supported on this platform.
+
+### hasMultiLocalhost
+* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
+
+Checks if there are multiple localhosts available.
+
+### inFreeBSDJail
+* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
+
+Checks whether free BSD Jail is true or false.
+
+### isAix
+* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
+
+Platform check for Advanced Interactive eXecutive (AIX).
+
+### isAlive(pid)
+* `pid` [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type)
+* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
+
+Attempts to 'kill' `pid`
+
+### isFreeBSD
+* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
+
+Platform check for Free BSD.
+
+### isLinux
+* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
+
+Platform check for Linux.
+
+### isLinuxPPCBE
+* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
+
+Platform check for Linux on PowerPC.
+
+### isOSX
+* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
+
+Platform check for macOS.
+
+### isSunOS
+* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
+
+Platform check for SunOS.
+
+### isWindows
+* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
+
+Platform check for Windows.
+
+### isWOW64
+* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
+
+Platform check for Windows 32-bit on Windows 64-bit.
+
+### leakedGlobals
+* return [<Array>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)
+
+Checks whether any globals are not on the `knownGlobals` list.
+
+### localhostIPv4
+* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
+
+Gets IP of localhost
+
+### localIPv6Hosts
+* return [<Array>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)
+
+Array of IPV6 hosts.
+
+### mustCall([fn][, expected])
+* fn [<Function>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function)
+* expected [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) default = 1
+* return [<Function>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function)
+
+Returns a function that calls `fn`. If the returned function has not been called
+exactly `expected` number of times when the test is complete, then the test will
+fail.
+
+If `fn` is not provided, `common.noop` will be used.
+
+### nodeProcessAborted(exitCode, signal)
+* `exitCode` [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type)
+* `signal` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
+* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
+
+Returns `true` if the exit code `exitCode` and/or signal name `signal` represent the exit code and/or signal name of a node process that aborted, `false` otherwise.
+
+### noop
+
+A non-op `Function` that can be used for a variety of scenarios.
+
+For instance,
+
+
+```js
+const common = require('../common');
+
+someAsyncAPI('foo', common.mustCall(common.noop));
+```
+
+### opensslCli
+* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type)
+
+Checks whether 'opensslCli' is supported.
+
+### platformTimeout(ms)
+* `ms` [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type)
+* return [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type)
+
+Platform normalizes timeout.
+
+### PIPE
+* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
+
+Path to the test sock.
+
+### PORT
+* return [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) default = `12346`
+
+Port tests are running on.
+
+### refreshTmpDir
+* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
+
+Deletes the 'tmp' dir and recreates it
+
+### rootDir
+* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
+
+Path to the 'root' directory. either `/` or `c:\\` (windows)
+
+### skip(msg)
+* `msg` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
+
+Logs '1..0 # Skipped: ' + `msg`
+
+### spawnPwd(options)
+* `options` [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)
+* return [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)
+
+Platform normalizes the `pwd` command.
+
+### spawnSyncPwd(options)
+* `options` [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)
+* return [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)
+
+Synchronous version of `spawnPwd`.
+
+### tmpDir
+* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
+
+The realpath of the 'tmp' directory.
+
+### tmpDirName
+* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)
+
+Name of the temp directory used by tests.
+
+## WPT Module
+
+The wpt.js module is a port of parts of
+[W3C testharness.js](https://github.com/w3c/testharness.js) for testing the
+Node.js
+[WHATWG URL API](https://nodejs.org/api/url.html#url_the_whatwg_url_api)
+implementation with tests from
+[W3C Web Platform Tests](https://github.com/w3c/web-platform-tests).
diff --git a/test/common.js b/test/common/index.js
similarity index 95%
rename from test/common.js
rename to test/common/index.js
index ca538a1961f8a6..3b707a93baa99d 100644
--- a/test/common.js
+++ b/test/common/index.js
@@ -33,12 +33,12 @@ const Timer = process.binding('timer_wrap').Timer;
const execSync = require('child_process').execSync;
const testRoot = process.env.NODE_TEST_DIR ?
- fs.realpathSync(process.env.NODE_TEST_DIR) : __dirname;
+ fs.realpathSync(process.env.NODE_TEST_DIR) : path.resolve(__dirname, '..');
const noop = () => {};
exports.noop = noop;
-exports.fixturesDir = path.join(__dirname, 'fixtures');
+exports.fixturesDir = path.join(__dirname, '..', 'fixtures');
exports.tmpDirName = 'tmp';
// PORT should match the definition in test/testpy/__init__.py.
exports.PORT = +process.env.NODE_COMMON_PORT || 12346;
@@ -631,32 +631,6 @@ Object.defineProperty(exports, 'hasIntl', {
}
});
-// https://github.com/w3c/testharness.js/blob/master/testharness.js
-exports.WPT = {
- test: (fn, desc) => {
- try {
- fn();
- } catch (err) {
- console.error(`In ${desc}:`);
- throw err;
- }
- },
- assert_equals: assert.strictEqual,
- assert_true: (value, message) => assert.strictEqual(value, true, message),
- assert_false: (value, message) => assert.strictEqual(value, false, message),
- assert_throws: (code, func, desc) => {
- assert.throws(func, (err) => {
- return typeof err === 'object' &&
- 'name' in err &&
- err.name.startsWith(code.name);
- }, desc);
- },
- assert_array_equals: assert.deepStrictEqual,
- assert_unreached(desc) {
- assert.fail(`Reached unreachable code: ${desc}`);
- }
-};
-
// Useful for testing expected internal/error objects
exports.expectsError = function expectsError({code, type, message}) {
return function(error) {
diff --git a/test/common/wpt.js b/test/common/wpt.js
new file mode 100644
index 00000000000000..52d8b7a580400c
--- /dev/null
+++ b/test/common/wpt.js
@@ -0,0 +1,30 @@
+/* eslint-disable required-modules */
+'use strict';
+
+const assert = require('assert');
+
+// https://github.com/w3c/testharness.js/blob/master/testharness.js
+module.exports = {
+ test: (fn, desc) => {
+ try {
+ fn();
+ } catch (err) {
+ console.error(`In ${desc}:`);
+ throw err;
+ }
+ },
+ assert_equals: assert.strictEqual,
+ assert_true: (value, message) => assert.strictEqual(value, true, message),
+ assert_false: (value, message) => assert.strictEqual(value, false, message),
+ assert_throws: (code, func, desc) => {
+ assert.throws(func, function(err) {
+ return typeof err === 'object' &&
+ 'name' in err &&
+ err.name.startsWith(code.name);
+ }, desc);
+ },
+ assert_array_equals: assert.deepStrictEqual,
+ assert_unreached(desc) {
+ assert.fail(`Reached unreachable code: ${desc}`);
+ }
+};
diff --git a/test/parallel/test-whatwg-url-constructor.js b/test/parallel/test-whatwg-url-constructor.js
index c2773b9af105fb..b67f63baf139b7 100644
--- a/test/parallel/test-whatwg-url-constructor.js
+++ b/test/parallel/test-whatwg-url-constructor.js
@@ -2,7 +2,8 @@
const common = require('../common');
const path = require('path');
const { URL, URLSearchParams } = require('url');
-const { test, assert_equals, assert_true, assert_throws } = common.WPT;
+const { test, assert_equals, assert_true, assert_throws } =
+ require('../common/wpt');
if (!common.hasIntl) {
// A handful of the tests fail when ICU is not included.
diff --git a/test/parallel/test-whatwg-url-historical.js b/test/parallel/test-whatwg-url-historical.js
index 452c14fc77a319..0f7c0e70cd6392 100644
--- a/test/parallel/test-whatwg-url-historical.js
+++ b/test/parallel/test-whatwg-url-historical.js
@@ -1,7 +1,7 @@
'use strict';
const common = require('../common');
const URL = require('url').URL;
-const { test, assert_equals, assert_throws } = common.WPT;
+const { test, assert_equals, assert_throws } = require('../common/wpt');
if (!common.hasIntl) {
// A handful of the tests fail when ICU is not included.
diff --git a/test/parallel/test-whatwg-url-origin.js b/test/parallel/test-whatwg-url-origin.js
index c7126585e170e7..b5b54f887f09eb 100644
--- a/test/parallel/test-whatwg-url-origin.js
+++ b/test/parallel/test-whatwg-url-origin.js
@@ -2,7 +2,7 @@
const common = require('../common');
const path = require('path');
const URL = require('url').URL;
-const { test, assert_equals } = common.WPT;
+const { test, assert_equals } = require('../common/wpt');
if (!common.hasIntl) {
// A handful of the tests fail when ICU is not included.
diff --git a/test/parallel/test-whatwg-url-searchparams-append.js b/test/parallel/test-whatwg-url-searchparams-append.js
index 9d1eaceba1223c..d9534a2209ddfe 100644
--- a/test/parallel/test-whatwg-url-searchparams-append.js
+++ b/test/parallel/test-whatwg-url-searchparams-append.js
@@ -3,7 +3,7 @@
const common = require('../common');
const assert = require('assert');
const URLSearchParams = require('url').URLSearchParams;
-const { test, assert_equals, assert_true } = common.WPT;
+const { test, assert_equals, assert_true } = require('../common/wpt');
/* eslint-disable */
/* WPT Refs:
diff --git a/test/parallel/test-whatwg-url-searchparams-constructor.js b/test/parallel/test-whatwg-url-searchparams-constructor.js
index e22ceec57083d0..643ba3c5f40ffb 100644
--- a/test/parallel/test-whatwg-url-searchparams-constructor.js
+++ b/test/parallel/test-whatwg-url-searchparams-constructor.js
@@ -6,7 +6,7 @@ const URLSearchParams = require('url').URLSearchParams;
const {
test, assert_equals, assert_true,
assert_false, assert_throws, assert_array_equals
-} = common.WPT;
+} = require('../common/wpt');
/* eslint-disable */
var params; // Strict mode fix for WPT.
diff --git a/test/parallel/test-whatwg-url-searchparams-delete.js b/test/parallel/test-whatwg-url-searchparams-delete.js
index bb3fcc9549c411..dae0b338ddae55 100644
--- a/test/parallel/test-whatwg-url-searchparams-delete.js
+++ b/test/parallel/test-whatwg-url-searchparams-delete.js
@@ -3,7 +3,8 @@
const common = require('../common');
const assert = require('assert');
const { URL, URLSearchParams } = require('url');
-const { test, assert_equals, assert_true, assert_false } = common.WPT;
+const { test, assert_equals, assert_true, assert_false } =
+ require('../common/wpt');
/* eslint-disable */
/* WPT Refs:
diff --git a/test/parallel/test-whatwg-url-searchparams-foreach.js b/test/parallel/test-whatwg-url-searchparams-foreach.js
index ea85da21a32a87..6135f356387289 100644
--- a/test/parallel/test-whatwg-url-searchparams-foreach.js
+++ b/test/parallel/test-whatwg-url-searchparams-foreach.js
@@ -3,7 +3,8 @@
const common = require('../common');
const assert = require('assert');
const { URL, URLSearchParams } = require('url');
-const { test, assert_array_equals, assert_unreached } = common.WPT;
+const { test, assert_array_equals, assert_unreached } =
+ require('../common/wpt');
/* eslint-disable */
var i; // Strict mode fix for WPT.
diff --git a/test/parallel/test-whatwg-url-searchparams-get.js b/test/parallel/test-whatwg-url-searchparams-get.js
index cc34373528cc1f..a49cc2c2b0d0c0 100644
--- a/test/parallel/test-whatwg-url-searchparams-get.js
+++ b/test/parallel/test-whatwg-url-searchparams-get.js
@@ -3,7 +3,7 @@
const common = require('../common');
const assert = require('assert');
const URLSearchParams = require('url').URLSearchParams;
-const { test, assert_equals, assert_true } = common.WPT;
+const { test, assert_equals, assert_true } = require('../common/wpt');
/* eslint-disable */
/* WPT Refs:
diff --git a/test/parallel/test-whatwg-url-searchparams-getall.js b/test/parallel/test-whatwg-url-searchparams-getall.js
index 9c060ecb6d97a0..bf287d52a01cd8 100644
--- a/test/parallel/test-whatwg-url-searchparams-getall.js
+++ b/test/parallel/test-whatwg-url-searchparams-getall.js
@@ -3,7 +3,8 @@
const common = require('../common');
const assert = require('assert');
const URLSearchParams = require('url').URLSearchParams;
-const { test, assert_equals, assert_true, assert_array_equals } = common.WPT;
+const { test, assert_equals, assert_true, assert_array_equals } =
+ require('../common/wpt');
/* eslint-disable */
/* WPT Refs:
diff --git a/test/parallel/test-whatwg-url-searchparams-has.js b/test/parallel/test-whatwg-url-searchparams-has.js
index fac4364081be88..127e1a8329bffc 100644
--- a/test/parallel/test-whatwg-url-searchparams-has.js
+++ b/test/parallel/test-whatwg-url-searchparams-has.js
@@ -3,7 +3,7 @@
const common = require('../common');
const assert = require('assert');
const URLSearchParams = require('url').URLSearchParams;
-const { test, assert_false, assert_true } = common.WPT;
+const { test, assert_false, assert_true } = require('../common/wpt');
/* eslint-disable */
/* WPT Refs:
diff --git a/test/parallel/test-whatwg-url-searchparams-set.js b/test/parallel/test-whatwg-url-searchparams-set.js
index a630355b6e3178..f7620c05d12e6e 100644
--- a/test/parallel/test-whatwg-url-searchparams-set.js
+++ b/test/parallel/test-whatwg-url-searchparams-set.js
@@ -3,7 +3,7 @@
const common = require('../common');
const assert = require('assert');
const URLSearchParams = require('url').URLSearchParams;
-const { test, assert_equals, assert_true } = common.WPT;
+const { test, assert_equals, assert_true } = require('../common/wpt');
/* eslint-disable */
/* WPT Refs:
diff --git a/test/parallel/test-whatwg-url-searchparams-sort.js b/test/parallel/test-whatwg-url-searchparams-sort.js
index 5bddc14d947d8f..adc34976047522 100644
--- a/test/parallel/test-whatwg-url-searchparams-sort.js
+++ b/test/parallel/test-whatwg-url-searchparams-sort.js
@@ -1,8 +1,8 @@
'use strict';
-const common = require('../common');
+require('../common');
const { URL, URLSearchParams } = require('url');
-const { test, assert_array_equals } = common.WPT;
+const { test, assert_array_equals } = require('../common/wpt');
/* eslint-disable */
/* WPT Refs:
diff --git a/test/parallel/test-whatwg-url-searchparams-stringifier.js b/test/parallel/test-whatwg-url-searchparams-stringifier.js
index 327611bc68a8b9..7162932546f233 100644
--- a/test/parallel/test-whatwg-url-searchparams-stringifier.js
+++ b/test/parallel/test-whatwg-url-searchparams-stringifier.js
@@ -3,7 +3,7 @@
const common = require('../common');
const assert = require('assert');
const URLSearchParams = require('url').URLSearchParams;
-const { test, assert_equals } = common.WPT;
+const { test, assert_equals } = require('../common/wpt');
/* eslint-disable */
/* WPT Refs:
diff --git a/test/parallel/test-whatwg-url-setters.js b/test/parallel/test-whatwg-url-setters.js
index 253415dad6e5a9..60a482decc32f3 100644
--- a/test/parallel/test-whatwg-url-setters.js
+++ b/test/parallel/test-whatwg-url-setters.js
@@ -4,7 +4,7 @@ const common = require('../common');
const assert = require('assert');
const path = require('path');
const URL = require('url').URL;
-const { test, assert_equals } = common.WPT;
+const { test, assert_equals } = require('../common/wpt');
const additionalTestCases = require(
path.join(common.fixturesDir, 'url-setter-tests-additional.js'));
diff --git a/test/parallel/test-whatwg-url-tojson.js b/test/parallel/test-whatwg-url-tojson.js
index 35af93261c79a5..5a90fdd27f3978 100644
--- a/test/parallel/test-whatwg-url-tojson.js
+++ b/test/parallel/test-whatwg-url-tojson.js
@@ -1,8 +1,8 @@
'use strict';
-const common = require('../common');
+require('../common');
const URL = require('url').URL;
-const { test, assert_equals } = common.WPT;
+const { test, assert_equals } = require('../common/wpt');
/* eslint-disable */
/* WPT Refs:
diff --git a/test/sequential/test-module-loading.js b/test/sequential/test-module-loading.js
index 1b53f199b51684..0e476bfbad864e 100644
--- a/test/sequential/test-module-loading.js
+++ b/test/sequential/test-module-loading.js
@@ -243,7 +243,7 @@ try {
}, {});
assert.deepStrictEqual(children, {
- 'common.js': {},
+ 'common/index.js': {},
'fixtures/not-main-module.js': {},
'fixtures/a.js': {
'fixtures/b/c.js': {
diff --git a/test/testpy/__init__.py b/test/testpy/__init__.py
index f7f64b7eb1d602..ccd55b05652b79 100644
--- a/test/testpy/__init__.py
+++ b/test/testpy/__init__.py
@@ -62,7 +62,7 @@ def GetCommand(self):
source = open(self.file).read()
flags_match = FLAGS_PATTERN.search(source)
if flags_match:
- # PORT should match the definition in test/common.js.
+ # PORT should match the definition in test/common/index.js.
env = { 'PORT': int(os.getenv('NODE_COMMON_PORT', '12346')) }
env['PORT'] += self.thread_id * 100
flag = flags_match.group(1).strip().format(**env).split()