function indentAll(lines: string) { return lines.split('\n').map(x => ' ' + x).join('\n') } /** * An error that encapsulates more than one error, to support soft-assertions from Jasmine * even though Allure's API assumes one error-per test */ export default class CompoundError extends Error { public innerErrors: Error[] constructor(...innerErrors: Error[]) { const message = ['CompoundError: One or more errors occurred. ---\n']. concat(innerErrors.map(x => x.message && x.stack?.includes(x.message) ? (x.stack ? `${indentAll(x.stack)}\n--- End of stack trace ---\n` : '') : ( (x.message ? ` ${x.message}\n--- End of error message ---\n` : '') + (x.stack ? `${indentAll(x.stack)}\n--- End of stack trace ---\n` : '') ) )).join('\n') super(message) this.innerErrors = innerErrors } }