UNPKG

@puppedo/core

Version:

PuppeDo is a runner for tests E2E in YAML style. With power of Playwright or Puppeteer.

50 lines (40 loc) 1.12 kB
import { EventEmitter } from 'events'; import Singleton from './Singleton'; type BlockType = { stepId: string; block: boolean; breadcrumbs?: string[]; }; export default class Blocker extends Singleton { blocks!: Array<BlockType>; blockEmitter!: EventEmitter; constructor() { super(); this.blocks = this.blocks || []; this.blockEmitter = this.blockEmitter || new EventEmitter(); this.blockEmitter.setMaxListeners(1000); } push(data: BlockType): void { this.blocks.push(data); } reset(): void { this.blocks = []; } setAll(blockArray: Array<BlockType>): void { this.blocks = blockArray; this.blocks.forEach((v) => { this.blockEmitter.emit('updateBlock', v); }); } setBlock(stepId: string, block: boolean): void { this.blocks.forEach((v) => { if (v.stepId === stepId) { const emmitData = { ...v, ...{ block: Boolean(block) } }; this.blockEmitter.emit('updateBlock', emmitData); } }); } getBlock(stepId: string): boolean { return Boolean((this.blocks.find((v) => v.stepId === stepId) || {}).block); } }