feat: enhance new website experiment motion

This commit is contained in:
boos
2026-06-09 16:59:04 +08:00
parent 59106e6a96
commit 55b3d4d99a
7 changed files with 618 additions and 218 deletions
+14 -2
View File
@@ -13,7 +13,7 @@ describe('website /new experimental page', () => {
const routes = read('src/routes/mod.rs');
expect(page).toContain('export default function NewWebsiteExperiment()');
expect(page).toContain('<AcidThreeField />');
expect(page).toContain('<AcidExperience />');
expect(page).toContain('BoosAPI');
expect(page).toContain('acid control plane');
expect(page).toContain('href="/"');
@@ -26,18 +26,30 @@ describe('website /new experimental page', () => {
});
it('uses Three.js as a client-only lightweight background with mobile and reduced-motion fallback', () => {
const source = read('website/app/new/AcidThreeField.tsx');
const source = read('website/app/new/AcidExperience.tsx');
const css = read('website/app/globals.css');
const pkg = read('website/package.json');
expect(pkg).toContain('"three"');
expect(pkg).toContain('"lenis"');
expect(pkg).not.toContain('"@react-three/fiber"');
expect(source).toContain('"use client";');
expect(source).toContain('import("three")');
expect(source).toContain('import("gsap")');
expect(source).toContain('import("gsap/ScrollTrigger")');
expect(source).toContain('import("lenis")');
expect(source).toContain('new THREE.WebGLRenderer');
expect(source).toContain('powerPreference: "low-power"');
expect(source).toContain('Math.min(window.devicePixelRatio || 1, 1.35)');
expect(source).toContain('new THREE.PointsMaterial');
expect(source).toContain('new THREE.TorusKnotGeometry');
expect(source).toContain('new THREE.ShaderMaterial');
expect(source).toContain('uScroll');
expect(source).toContain('fragmentShader');
expect(source).toContain('gsap.matchMedia()');
expect(source).toContain('scrollTrigger');
expect(source).toContain('Lenis');
expect(source).toContain('ScrollTrigger.update');
expect(source).toContain('prefers-reduced-motion: reduce');
expect(source).toContain('max-width: 720px');
expect(source).toContain('deviceMemory');