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')
supportsColor.set(true)
expect(color('fast', 'foobar')).toBe('\u001b[90mfoobar\u001b[0m')
})
it('colorLines', () => {
supportsColor.set(false)
expect(colorLines('fast', 'foo\nbar\nloo')).toBe('foo\nbar\nloo')
})
afterAll(() => {
supportsColor.set(true)
})
})