{ "schema": "freecad-web-browser-matrix/v1", "sourceRevision": "4f4e9244e613ea2df06e70027074a562695048cb", "supportPolicy": { "desktop": ["Chrome", "Firefox", "WebKit"], "mobile": ["Chrome", "Safari"], "unavailableEnvironmentsMustRemainExplicit": true }, "features": [ {"id": "startup", "expected": "WebKernel ready status"}, {"id": "step-import", "expected": "STEP sample produces 8376 vertices, 2792 triangles, 62 faces"}, {"id": "reset", "expected": "empty scene and 已清空 status"}, {"id": "worker", "expected": "load/reset responses carry requestId"}, {"id": "webassembly", "expected": "FreeCADWebKernel.wasm initializes"}, {"id": "opfs", "expected": "write/read/list/delete smoke"}, {"id": "mesh-cache", "expected": "cache key/write/read/delete smoke"}, {"id": "fcstd-save-reopen", "expected": "FCStd save, close, reopen and object/property validation", "scope": "pending in current browser slice"} ], "environments": [ { "id": "desktop-chrome-151", "class": "desktop", "browser": "Google Chrome 151.0.7922.137", "os": "Linux 6.14.0-27-generic x86_64", "viewport": [1280, 900], "devicePixelRatio": 1, "mode": "headless Chrome with SwiftShader WebGL", "availability": "available" }, { "id": "desktop-firefox-141", "class": "desktop", "browser": "Mozilla Firefox 141.0", "os": "Linux 6.14.0-27-generic x86_64", "viewport": [1280, 757], "devicePixelRatio": 1, "mode": "headless Firefox", "availability": "available" }, { "id": "desktop-webkit-unavailable", "class": "desktop", "browser": "WebKit", "os": "not installed in execution environment", "viewport": [1280, 757], "devicePixelRatio": 1, "mode": "unavailable", "availability": "environment_unavailable" }, { "id": "mobile-chrome-pixel7-emulation", "class": "mobile-emulation", "browser": "Google Chrome 151.0.7922.137", "os": "Linux host with CDP emulation", "device": "Pixel 7 emulation", "viewport": [412, 915], "devicePixelRatio": 2.625, "mode": "Chrome DevTools Protocol; not native Android Chrome", "availability": "available_emulation" }, { "id": "mobile-safari-unavailable", "class": "mobile", "browser": "Safari", "os": "not available on Linux execution host", "viewport": [390, 844], "devicePixelRatio": 3, "mode": "unavailable", "availability": "environment_unavailable" } ], "cases": [ {"id": "chrome-desktop-smoke", "environment": "desktop-chrome-151", "featureIds": ["startup", "step-import", "reset", "worker", "webassembly"], "status": "ready", "evidence": "FreeCAD/docs/freecad-performance-desktop.json"}, {"id": "chrome-desktop-storage", "environment": "desktop-chrome-151", "featureIds": ["opfs", "mesh-cache"], "status": "ready", "evidence": ["FreeCAD/docs/freecad-opfs-smoke.log", "FreeCAD/docs/freecad-mesh-cache-smoke.log"]}, {"id": "chrome-mobile-smoke", "environment": "mobile-chrome-pixel7-emulation", "featureIds": ["startup", "step-import", "reset", "worker", "webassembly"], "status": "ready", "evidence": "FreeCAD/docs/freecad-performance-mobile.json"}, {"id": "chrome-fcstd-boundary", "environment": "desktop-chrome-151", "featureIds": ["fcstd-save-reopen"], "status": "pending", "evidence": "FreeCAD/docs/freecad-performance-desktop.json"}, {"id": "firefox-desktop-smoke", "environment": "desktop-firefox-141", "featureIds": ["startup", "step-import", "reset", "worker", "webassembly"], "status": "planned", "evidence": "FreeCAD/docs/freecad-browser-desktop.json"}, {"id": "firefox-desktop-storage", "environment": "desktop-firefox-141", "featureIds": ["opfs", "mesh-cache"], "status": "planned", "evidence": "FreeCAD/docs/freecad-browser-desktop.json"}, {"id": "webkit-desktop", "environment": "desktop-webkit-unavailable", "featureIds": ["startup", "step-import", "reset", "worker", "webassembly", "opfs", "mesh-cache", "fcstd-save-reopen"], "status": "environment_unavailable", "evidence": "FreeCAD/docs/freecad-browser-matrix.log"}, {"id": "safari-mobile", "environment": "mobile-safari-unavailable", "featureIds": ["startup", "step-import", "reset", "worker", "webassembly", "opfs", "mesh-cache", "fcstd-save-reopen"], "status": "environment_unavailable", "evidence": "FreeCAD/docs/freecad-browser-matrix.log"} ] }