Generate workspace element IDs on HTTP origins without randomUUID
studio CI and deployment / verify-and-deploy (push) Successful in 5m5s
studio CI and deployment / verify-and-deploy (push) Successful in 5m5s
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import {test} from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import {readFileSync} from 'node:fs';
|
||||
import {nativeLayout,defaultText,textSize,imageShape,designUrl} from '../src/lib/native-layout.ts';
|
||||
import {nativeLayout,defaultText,textSize,imageShape,designUrl,newElementId} from '../src/lib/native-layout.ts';
|
||||
const layouts=JSON.parse(readFileSync(new URL('../src/content/templates/layouts.json',import.meta.url)));
|
||||
test('all 27 native pages are independent of source images and supply actual text',()=>{
|
||||
for(const original of layouts){const layout=nativeLayout(original),serialized=JSON.stringify(layout);assert.ok(!serialized.includes('data:image'));assert.ok(!serialized.includes('raster'));assert.ok(!serialized.includes('source'));assert.ok(serialized.length<7000);
|
||||
@@ -14,3 +14,5 @@ test('geometric templates retain their distinct silhouettes without bitmap masks
|
||||
assert.notEqual(imageShape(layouts[21],layouts[21].elements.find(s=>s.id==='I02')).clipPath,imageShape(layouts[26],layouts[26].elements.find(s=>s.id==='I02')).clipPath);
|
||||
assert.equal(designUrl('ref-01','abc'),'/studio/layouts/ref-01?id=abc');
|
||||
});
|
||||
|
||||
test('element IDs work on HTTP origins without secure-context randomUUID',()=>{const saved=Object.getOwnPropertyDescriptor(globalThis,'crypto');let calls=0;Object.defineProperty(globalThis,'crypto',{configurable:true,value:{getRandomValues(array){for(let i=0;i<array.length;i++)array[i]=++calls;return array}}});try{const first=newElementId(),second=newElementId();assert.match(first,/^user-[a-f0-9]{32}$/);assert.notEqual(first,second)}finally{Object.defineProperty(globalThis,'crypto',saved)}});
|
||||
|
||||
Reference in New Issue
Block a user