mirror of
https://github.com/datashard/snapshot.git
synced 2024-11-21 13:42:28 +00:00
add prettier logging
This commit is contained in:
parent
960e699075
commit
5f861d4949
1 changed files with 109 additions and 0 deletions
|
@ -1,2 +1,111 @@
|
||||||
// register .snapshot() command
|
// register .snapshot() command
|
||||||
|
|
||||||
|
const baseStyles = [
|
||||||
|
{
|
||||||
|
name: 'info',
|
||||||
|
color: '#cbd5e1',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'success',
|
||||||
|
color: '#10b981',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'warning',
|
||||||
|
color: '#fbbf24',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'error',
|
||||||
|
color: '#dc2626',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper function to convert hex colors to rgb
|
||||||
|
* @param {string} hex - hex color
|
||||||
|
* @returns {string}
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* // returns "255 255 255"
|
||||||
|
* hex2rgb("#ffffff")
|
||||||
|
*/
|
||||||
|
function hex2rgb(hex) {
|
||||||
|
const r = parseInt(hex.slice(1, 3), 16)
|
||||||
|
const g = parseInt(hex.slice(3, 5), 16)
|
||||||
|
const b = parseInt(hex.slice(5, 7), 16)
|
||||||
|
|
||||||
|
return `${r} ${g} ${b}`
|
||||||
|
}
|
||||||
|
|
||||||
|
baseStyles.forEach((style) => {
|
||||||
|
createCustomLog(style.name, style.color)
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a custom log
|
||||||
|
* @param {string} name - Name of the custom log
|
||||||
|
* @param {string} baseColor - Base color of the custom log in hex format
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* // Create a custom log with name "misc" and base color "#9333ea"
|
||||||
|
* createCustomLog("misc", "#9333ea")
|
||||||
|
*/
|
||||||
|
export function createCustomLog(name, baseColor) {
|
||||||
|
if (!name || !baseColor) {
|
||||||
|
throw new Error('Missing parameters')
|
||||||
|
}
|
||||||
|
|
||||||
|
const logStyle = document.createElement('style')
|
||||||
|
|
||||||
|
logStyle.textContent = `
|
||||||
|
.command.command-name-log-${name} span.command-method {
|
||||||
|
margin-right: 0.5rem;
|
||||||
|
min-width: 10px;
|
||||||
|
border-radius: 0.125rem;
|
||||||
|
border-width: 1px;
|
||||||
|
padding-left: 0.375rem;
|
||||||
|
padding-right: 0.375rem;
|
||||||
|
padding-top: 0.125rem;
|
||||||
|
padding-bottom: 0.125rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
|
||||||
|
border-color: rgb(${hex2rgb(baseColor)} / 1);
|
||||||
|
background-color: rgb(${hex2rgb(baseColor)} / 0.2);
|
||||||
|
color: rgb(${hex2rgb(baseColor)} / 1) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.command.command-name-log-${name} span.command-message{
|
||||||
|
color: rgb(${hex2rgb(baseColor)} / 1);
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.command.command-name-log-${name} span.command-message strong,
|
||||||
|
.command.command-name-log-${name} span.command-message em {
|
||||||
|
color: rgb(${hex2rgb(baseColor)} / 1);
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
Cypress.$(window.top.document.head).append(logStyle)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Print a message with a formatted style
|
||||||
|
* @param {Object} log - The message to be printed.
|
||||||
|
* @param {string} log.title - The title of the message.
|
||||||
|
* @param {string} log.message - The content of the message.
|
||||||
|
* @param {('info' | 'warning' | 'error' | 'success')} log.type - The type of the message.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* // Print a message with a formatted style e.g. success
|
||||||
|
* cy.print({ title: 'foo', message: 'bar', type: 'success' })
|
||||||
|
*/
|
||||||
|
function cyPrint({ title, message, type }) {
|
||||||
|
Cypress.log({
|
||||||
|
name: `log-${type}`,
|
||||||
|
displayName: `${title}`,
|
||||||
|
message,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
Cypress.Commands.add('SNAPSHOT_prettyprint', cyPrint)
|
||||||
|
|
||||||
require('../../src/index').register()
|
require('../../src/index').register()
|
||||||
|
|
Loading…
Reference in a new issue