
WIP; WIP 2 web: Flesh out fixtures, test IDs. web: Flesh out provider tests. web: Flesh out LDAP test. web: Fix typo. web: Allow base URL to be updated. web: Clean up. web: Tidy types. web: Update ARIA attributes for better test targeting. web: Clean up message labeling. web: Clean up ARIA labels. web: Flesh out table ARIA labels. web: Flesh out series. web: Fix linter. web: Clean up test reporting, timing issues. Add RADIUS test.
28 lines
657 B
JavaScript
28 lines
657 B
JavaScript
/**
|
|
* @file Helpers for running tests.
|
|
*/
|
|
|
|
/**
|
|
* A function that returns a promise.
|
|
* @template {never[]} [A=never[]]
|
|
* @typedef {(...args: A) => Promise<unknown>} Thenable
|
|
*/
|
|
|
|
/**
|
|
* A tuple of a function and its arguments.
|
|
* @template {Thenable} [T=Thenable]
|
|
* @typedef {[T, Parameters<T>]} SerializedThenable
|
|
*/
|
|
|
|
/**
|
|
* Executes a sequence of promise-returning functions in series
|
|
* @template {Thenable[]} T
|
|
* @param {{ [K in keyof T]: [T[K], ...Parameters<T[K]>] }} sequence
|
|
* @returns {Promise<void>}
|
|
*/
|
|
export async function series(...sequence) {
|
|
for (const [thenable, ...args] of sequence) {
|
|
await thenable(...args);
|
|
}
|
|
}
|