import { AssertionReportDiffer } from '@serenity-js/core/lib/io' ; import { Outcome } from '@serenity-js/core/lib/model' ; desc public abstract export abstract class TerminalTheme { param { serenity-js constructor ( protected readonly differ ) { } abstract heading ( ... parts ) ; abstract outcome ( outcome , ... parts ) ; abstract separator ( pattern ) ; abstract diff ( expected , actual ) ; abstract log ( ... parts ) ; desc protected param { any [ ] } parts returns { string } protected joined ( parts ) { return parts . map ( String ) . join ( '' ) ; } desc protected param { string } pattern param { number } maxLength returns { string } protected repeat ( pattern , maxLength = 80 ) { if ( ! pattern ) { return '' ; } const repetitions = Math . floor ( maxLength / pattern . length ) ; return pattern . repeat ( repetitions ) ; } }