import { describe, expect, vi, it, afterAll } from 'vitest' import supportsColor from '../src/supportsColor.js' import { sanitizeString, sanitizeCaps, pad, color, colorLines } from '../src/utils.js' vi.mock('../src/supportsColor.js', () => { return { default: new Proxy({ stdout: false }, { get: (ctx, prop) => { if (prop === 'stdout') { return ctx.stdout } if (prop === 'set') { return (val: boolean) => { ctx.stdout = val } } } }) } }) describe('utils', () => { it('sanitizeString', () => { expect(sanitizeString('Chrome v64 Windows XP my-awesome.app')) .toBe('chromev64windowsxpmy-awesome_app') }) it('sanitizeCaps', () => { expect(sanitizeCaps()).toBe('') expect(sanitizeCaps({ browserName: 'chrome', platform: 'Windows 10', version: 'latest', 'appium:app': 'my-awesome.app' })).toBe('chrome.latest.windows10.my-awesome_app') expect(sanitizeCaps({ browserName: 'chrome', platformName: 'Windows 10', browserVersion: 'latest' })).toBe('chrome.latest.windows10') expect(sanitizeCaps({ deviceName: 'Android Emulator', platformName: 'Android', 'appium:platformVersion': '6.4', 'appium:app': 'my-awesome.apk' })).toBe('android.androidemulator.6_4.my-awesome_apk') }) it('pad', () => { expect(pad('foobar', 10)).toBe(' foobar') }) it('color', () => { expect(color('fast', 'foobar')).toBe('foobar') // @ts-ignore supportsColor.set(true) expect(color('fast', 'foobar')).toBe('\u001b[90mfoobar\u001b[0m') }) it('colorLines', () => { // @ts-ignore supportsColor.set(false) expect(colorLines('fast', 'foo\nbar\nloo')).toBe('foo\nbar\nloo') }) afterAll(() => { // @ts-ignore supportsColor.set(true) }) })