- Created a .cursorignore file to manage local environment files. - Updated .env.example to reflect changes in the public app URL. - Modified the gmail workspace configuration to include the drive-suite path. - Enhanced email view components to support attachment handling and fallback for plain text bodies. - Improved user experience by updating attachment display logic and integrating inline attachment support.
79 lines
2.4 KiB
TypeScript
79 lines
2.4 KiB
TypeScript
import { describe, it } from "node:test"
|
|
import assert from "node:assert/strict"
|
|
import {
|
|
classifyContrastRepairKind,
|
|
contrastRatio,
|
|
isLikelyLightPaintedBackground,
|
|
parseCssColorToRgb,
|
|
relativeLuminance,
|
|
} from "./email-preview-contrast.ts"
|
|
|
|
describe("email-preview-contrast math", () => {
|
|
it("parseCssColorToRgb handles hex and rgb", () => {
|
|
assert.deepEqual(parseCssColorToRgb("#ffffff"), [255, 255, 255])
|
|
assert.deepEqual(parseCssColorToRgb("rgb(32, 33, 36)"), [32, 33, 36])
|
|
assert.equal(parseCssColorToRgb("transparent"), null)
|
|
assert.equal(parseCssColorToRgb("rgba(255,255,255,0)"), null)
|
|
})
|
|
|
|
it("contrastRatio is low for similar colors", () => {
|
|
const white: [number, number, number] = [255, 255, 255]
|
|
const nearWhite: [number, number, number] = [250, 250, 250]
|
|
assert.ok(contrastRatio(white, nearWhite) < 1.2)
|
|
assert.ok(contrastRatio(white, [0, 0, 0]) > 10)
|
|
})
|
|
|
|
it("relativeLuminance orders black below white", () => {
|
|
assert.ok(relativeLuminance([0, 0, 0]) < relativeLuminance([255, 255, 255]))
|
|
})
|
|
|
|
it("classifyContrastRepairKind detects light-on-light", () => {
|
|
assert.equal(
|
|
classifyContrastRepairKind([232, 234, 237], [255, 255, 255]),
|
|
"light-surface"
|
|
)
|
|
assert.equal(
|
|
classifyContrastRepairKind([232, 234, 237], [236, 239, 245]),
|
|
"light-surface"
|
|
)
|
|
})
|
|
|
|
it("classifyContrastRepairKind ignores readable pairs", () => {
|
|
assert.equal(classifyContrastRepairKind([32, 33, 36], [255, 255, 255]), null)
|
|
assert.equal(
|
|
classifyContrastRepairKind([255, 255, 255], [11, 30, 61]),
|
|
null
|
|
)
|
|
})
|
|
|
|
it("classifyContrastRepairKind detects dark gray on dark canvas", () => {
|
|
assert.equal(
|
|
classifyContrastRepairKind([51, 51, 51], [32, 33, 36]),
|
|
"dark-surface"
|
|
)
|
|
})
|
|
|
|
it("classifyContrastRepairKind keeps light-on-light even if dark canvas looked fine", () => {
|
|
assert.equal(
|
|
classifyContrastRepairKind([232, 234, 237], [255, 255, 255]),
|
|
"light-surface"
|
|
)
|
|
assert.ok(
|
|
contrastRatio([232, 234, 237], [32, 33, 36]) >= 3,
|
|
"misleading high ratio vs dark assumed canvas"
|
|
)
|
|
})
|
|
|
|
it("isLikelyLightPaintedBackground detects newsletter gradients", () => {
|
|
assert.ok(
|
|
isLikelyLightPaintedBackground(
|
|
"linear-gradient(180deg, #f5f7fa 0%, #eceff5 100%)"
|
|
)
|
|
)
|
|
assert.equal(
|
|
isLikelyLightPaintedBackground("linear-gradient(180deg, #0b1e3d, #000)"),
|
|
false
|
|
)
|
|
})
|
|
})
|