chore: remove GitHub Actions workflows, use Woodpecker CI exclusively
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
import {
|
||||
calculateContrastRatio,
|
||||
meetsWCAGStandard,
|
||||
} from './color-contrast';
|
||||
|
||||
describe('color-contrast', () => {
|
||||
describe('calculateContrastRatio', () => {
|
||||
it('should calculate contrast ratio for black on white', () => {
|
||||
const ratio = calculateContrastRatio('#000000', '#FFFFFF');
|
||||
expect(ratio).toBeCloseTo(21, 0);
|
||||
});
|
||||
|
||||
it('should calculate contrast ratio for white on black', () => {
|
||||
const ratio = calculateContrastRatio('#FFFFFF', '#000000');
|
||||
expect(ratio).toBeCloseTo(21, 0);
|
||||
});
|
||||
|
||||
it('should calculate contrast ratio for gray on white', () => {
|
||||
const ratio = calculateContrastRatio('#666666', '#FFFFFF');
|
||||
expect(ratio).toBeGreaterThan(4);
|
||||
expect(ratio).toBeLessThan(6);
|
||||
});
|
||||
|
||||
it('should calculate contrast ratio for dark blue on white', () => {
|
||||
const ratio = calculateContrastRatio('#00008B', '#FFFFFF');
|
||||
expect(ratio).toBeGreaterThan(8);
|
||||
});
|
||||
|
||||
it('should calculate contrast ratio for same colors', () => {
|
||||
const ratio = calculateContrastRatio('#FF0000', '#FF0000');
|
||||
expect(ratio).toBe(1);
|
||||
});
|
||||
|
||||
it('should handle lowercase hex', () => {
|
||||
const ratio1 = calculateContrastRatio('#000000', '#FFFFFF');
|
||||
const ratio2 = calculateContrastRatio('#000000', '#ffffff');
|
||||
expect(ratio1).toBe(ratio2);
|
||||
});
|
||||
});
|
||||
|
||||
describe('meetsWCAGStandard', () => {
|
||||
describe('AA level - normal text', () => {
|
||||
it('should pass for black on white', () => {
|
||||
const result = meetsWCAGStandard('#000000', '#FFFFFF', 'AA', 'normal');
|
||||
expect(result.passes).toBe(true);
|
||||
expect(result.requiredRatio).toBe(4.5);
|
||||
});
|
||||
|
||||
it('should fail for light gray on white', () => {
|
||||
const result = meetsWCAGStandard('#CCCCCC', '#FFFFFF', 'AA', 'normal');
|
||||
expect(result.passes).toBe(false);
|
||||
expect(result.requiredRatio).toBe(4.5);
|
||||
});
|
||||
|
||||
it('should pass for dark blue on white', () => {
|
||||
const result = meetsWCAGStandard('#00008B', '#FFFFFF', 'AA', 'normal');
|
||||
expect(result.passes).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe('AA level - large text', () => {
|
||||
it('should pass for gray on white', () => {
|
||||
const result = meetsWCAGStandard('#666666', '#FFFFFF', 'AA', 'large');
|
||||
expect(result.passes).toBe(true);
|
||||
expect(result.requiredRatio).toBe(3);
|
||||
});
|
||||
|
||||
it('should fail for light gray on white', () => {
|
||||
const result = meetsWCAGStandard('#CCCCCC', '#FFFFFF', 'AA', 'large');
|
||||
expect(result.passes).toBe(false);
|
||||
expect(result.requiredRatio).toBe(3);
|
||||
});
|
||||
});
|
||||
|
||||
describe('AAA level - normal text', () => {
|
||||
it('should pass for black on white', () => {
|
||||
const result = meetsWCAGStandard('#000000', '#FFFFFF', 'AAA', 'normal');
|
||||
expect(result.passes).toBe(true);
|
||||
expect(result.requiredRatio).toBe(7);
|
||||
});
|
||||
|
||||
it('should pass for dark blue on white', () => {
|
||||
const result = meetsWCAGStandard('#00008B', '#FFFFFF', 'AAA', 'normal');
|
||||
expect(result.passes).toBe(true);
|
||||
expect(result.requiredRatio).toBe(7);
|
||||
});
|
||||
});
|
||||
|
||||
describe('AAA level - large text', () => {
|
||||
it('should pass for dark blue on white', () => {
|
||||
const result = meetsWCAGStandard('#00008B', '#FFFFFF', 'AAA', 'large');
|
||||
expect(result.passes).toBe(true);
|
||||
expect(result.requiredRatio).toBe(4.5);
|
||||
});
|
||||
|
||||
it('should pass for gray on white', () => {
|
||||
const result = meetsWCAGStandard('#666666', '#FFFFFF', 'AAA', 'large');
|
||||
expect(result.passes).toBe(true);
|
||||
expect(result.requiredRatio).toBe(4.5);
|
||||
});
|
||||
});
|
||||
|
||||
describe('default parameters', () => {
|
||||
it('should default to AA level', () => {
|
||||
const result = meetsWCAGStandard('#000000', '#FFFFFF');
|
||||
expect(result.requiredRatio).toBe(4.5);
|
||||
});
|
||||
|
||||
it('should default to normal text size', () => {
|
||||
const result = meetsWCAGStandard('#000000', '#FFFFFF', 'AA');
|
||||
expect(result.requiredRatio).toBe(4.5);
|
||||
});
|
||||
});
|
||||
|
||||
describe('result structure', () => {
|
||||
it('should return result with all required properties', () => {
|
||||
const result = meetsWCAGStandard('#000000', '#FFFFFF');
|
||||
expect(result).toHaveProperty('passes');
|
||||
expect(result).toHaveProperty('ratio');
|
||||
expect(result).toHaveProperty('requiredRatio');
|
||||
expect(typeof result.passes).toBe('boolean');
|
||||
expect(typeof result.ratio).toBe('number');
|
||||
expect(typeof result.requiredRatio).toBe('number');
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user