ultisuite-client/lib/email-preview-contrast.test.ts
R3D347HR4Y 8a02c10ba3 Add environment configuration and update email view components
- 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.
2026-06-04 00:12:43 +02:00

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
)
})
})