UNPKG

@tshifhiwa/ohrm-ui-automation-framework

Version:

Playwright and TypeScript–based test automation framework for validating core UI features and workflows of the OrangeHRM demo application.

56 lines (48 loc) 1.96 kB
import { AsyncFileManager } from "../../../fileManager/asyncFileManager.js"; import * as path from "path"; import CryptoConstants from "../types/cryptoConstants.js"; import { FileEncoding } from "../../../fileManager/internal/file-encoding.enum.js"; import logger from "../../../logger/loggerManager.js"; export default class SecretFileManager { /** * Gets the full file path for a tracking file. */ public static getFilePath(filename: string): string { return path.join(process.cwd(), CryptoConstants.TRACKING_DIR, filename); } /** * Loads a JSON file with a default value fallback. */ public static async loadJsonFile<T>(filePath: string, defaultValue: T): Promise<T> { const fileExists = await AsyncFileManager.doesFileExist(filePath); if (!fileExists) { logger.info(`No file found at "${filePath}", creating with default data`); return defaultValue; } try { const fileContent = await AsyncFileManager.readFile(filePath, FileEncoding.UTF8); return JSON.parse(fileContent) as T; } catch (error) { logger.error(`Failed to parse JSON file at "${filePath}": ${error}`); return defaultValue; } } /** * Saves data to a JSON file. */ public static async saveJsonFile<T>(filePath: string, data: T): Promise<void> { const jsonContent = JSON.stringify(data, null, 2); await AsyncFileManager.writeFile(filePath, jsonContent, `Updated ${path.basename(filePath)}`); } /** * Ensures the tracking directory exists. */ public static async ensureTrackingDirectoryExists(): Promise<void> { const dirPath = path.join(process.cwd(), CryptoConstants.TRACKING_DIR); const dirExists = await AsyncFileManager.doesFileExist(dirPath); if (!dirExists) { logger.info(`Creating tracking directory at "${dirPath}"`); await AsyncFileManager.createDirectory(dirPath); } } }