UNPKG

@wdio/image-comparison-core

Version:

Image comparison core module for @wdio/visual-service - WebdriverIO visual testing framework

59 lines (58 loc) 2.25 kB
import { join, normalize } from 'node:path'; import { rmSync } from 'node:fs'; import logger from '@wdio/logger'; import { defaultOptions } from './helpers/options.js'; import { FOLDERS } from './helpers/constants.js'; const log = logger('@wdio/visual-service:@wdio/image-comparison-core'); export default class BaseClass { defaultOptions; folders; constructor(options) { // Determine default options this.defaultOptions = defaultOptions(options); // Setup folder structure this.folders = this._setupFolders(options); // Clear runtime folders if requested if (options.clearRuntimeFolder) { this._clearRuntimeFolders(); } } /** * Setup the folder structure for screenshots * @private */ _setupFolders(options) { const baselineFolder = typeof options.baselineFolder === 'function' ? options.baselineFolder(options) : normalize(options.baselineFolder || FOLDERS.DEFAULT.BASE); const baseFolder = typeof options.screenshotPath === 'function' ? options.screenshotPath(options) : normalize(options.screenshotPath || FOLDERS.DEFAULT.SCREENSHOTS); return { actualFolder: join(baseFolder, FOLDERS.ACTUAL), baselineFolder, diffFolder: join(baseFolder, FOLDERS.DIFF), }; } /** * Clear the runtime folders (actual and diff) * @private */ _clearRuntimeFolders() { log.info('\x1b[33m\n##############################\n!!CLEARING RUNTIME FOLDERS!!\n##############################\x1b[0m'); try { rmSync(this.folders.actualFolder, { recursive: true, force: true }); log.debug(`Cleared actual folder: ${this.folders.actualFolder}`); } catch (error) { log.warn(`Failed to clear actual folder ${this.folders.actualFolder}:`, error); } try { rmSync(this.folders.diffFolder, { recursive: true, force: true }); log.debug(`Cleared diff folder: ${this.folders.diffFolder}`); } catch (error) { log.warn(`Failed to clear diff folder ${this.folders.diffFolder}:`, error); } } }