fingerprintjs
37 строк · 1.1 Кб
1import { getBrowserMajorVersion, isSafari } from '../../tests/utils'
2import getCanvasFingerprint, { ImageStatus } from './canvas'
3
4describe('Sources', () => {
5describe('canvas', () => {
6it('returns expected value', async () => {
7const { winding, text, geometry } = await getCanvasFingerprint()
8
9expect(winding).toBeTrue()
10
11if (shouldSkip()) {
12expect(text).toBe(ImageStatus.Skipped)
13expect(geometry).toBe(ImageStatus.Skipped)
14} else {
15expect(isDataURL(geometry)).toBeTrue()
16expect(isDataURL(text)).toBeTrue()
17
18expect(geometry.length).toBeGreaterThan(1000)
19expect(text.length).toBeGreaterThan(1000)
20}
21})
22
23it('returns stable values', async () => {
24const first = await getCanvasFingerprint()
25const second = await getCanvasFingerprint()
26expect(second).toEqual(first)
27})
28})
29})
30
31function shouldSkip() {
32return isSafari() && (getBrowserMajorVersion() ?? 0) >= 17
33}
34
35function isDataURL(url: string) {
36return /^data:image\/png;base64,([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/.test(url)
37}
38