| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- {
- "schemaVersion": 1,
- "description": "Native wrapper experience contract used while the viewer is being split into a pure TypeScript core and public framework wrappers.",
- "baseline": {
- "sourceBranch": "main",
- "rootPackage": "@flyfish-group/file-viewer-workspace",
- "versionSource": "package.json",
- "formatMatrixSource": "packages/core/src/registry/formats.ts",
- "wrapperManifestSource": "ecosystem/wrappers.json",
- "smokeMatrixSource": "ecosystem/smoke-matrix.json"
- },
- "requiredScripts": [
- "verify:demo-browser-smoke",
- "verify:component-browser-smoke",
- "verify:browser-smoke",
- "verify:smoke-matrix",
- "verify:wrapper-api",
- "verify:wrapper-options"
- ],
- "featureGroups": [
- {
- "id": "source-loading",
- "evidence": ["url-source", "file-source", "buffer-source", "stale-request-guard", "loading-state"]
- },
- {
- "id": "options",
- "evidence": ["options-behavior", "theme", "toolbar", "watermark", "search", "ai", "pdf", "docx", "typst", "archive", "cad"]
- },
- {
- "id": "toolbar-operations",
- "evidence": ["download", "print", "export-html", "watermark-toggle", "capability-state", "capability-visibility", "before-operation"]
- },
- {
- "id": "lifecycle-events",
- "evidence": ["event-callback", "native-wrapper-event", "load-start", "load-complete", "unload-start", "unload-complete"]
- },
- {
- "id": "document-navigation",
- "evidence": ["anchors", "current-location", "scroll-to-line", "search-next-previous", "highlight"]
- },
- {
- "id": "layout-visual",
- "evidence": ["dom-snapshot", "visual-screenshot", "paper-layout", "fit-to-view", "dark-mode-readability"]
- },
- {
- "id": "print-export",
- "evidence": ["print-output", "export-output", "document-only-content", "page-size"]
- },
- {
- "id": "wrapper-contract",
- "evidence": ["shared-core-version", "shared-options", "shared-events", "shared-controller-handle", "standalone-package"]
- }
- ],
- "surfaces": [
- {
- "id": "vue3-current-component",
- "label": "Vue 3 wrapper component",
- "kind": "baseline-component",
- "packageName": "@flyfish-group/file-viewer3",
- "entryFiles": [
- "packages/components/vue3/src/package/components/FileViewer/FileViewer.vue",
- "packages/components/vue3/src/package/index.ts",
- "apps/viewer-demo/src/main.ts"
- ],
- "smokeScripts": ["verify:demo-browser-smoke"],
- "preserves": ["source-loading", "options", "toolbar-operations", "lifecycle-events", "document-navigation", "layout-visual", "print-export"]
- },
- {
- "id": "compare-page",
- "label": "Document compare page",
- "kind": "baseline-page",
- "packageName": "@flyfish-group/file-viewer3",
- "entryFiles": [
- "apps/viewer-demo/src/compare/CompareApp.vue",
- "apps/viewer-demo/src/compare/main.ts",
- "apps/viewer-demo/src/compare/useSynchronizedScroll.ts"
- ],
- "smokeScripts": ["verify:demo-browser-smoke"],
- "preserves": ["source-loading", "document-navigation", "layout-visual"]
- },
- {
- "id": "pure-web-native-viewer",
- "label": "Shared pure Web native viewer",
- "kind": "native-viewer",
- "packageName": "@file-viewer/web",
- "entryFiles": [
- "packages/components/web/src/index.ts",
- "packages/components/web/src/global.ts",
- "packages/components/web/package.json"
- ],
- "smokeScripts": ["verify:component-browser-smoke"],
- "preserves": ["source-loading", "options", "lifecycle-events", "wrapper-contract"]
- },
- {
- "id": "react-native-wrapper",
- "label": "React native component package",
- "kind": "native-wrapper",
- "wrapperId": "react",
- "packageName": "@flyfish-group/file-viewer-react",
- "entryFiles": ["packages/compat/react/src/index.tsx", "apps/component-demo/src/main.tsx"],
- "smokeScripts": ["verify:component-browser-smoke"],
- "preserves": ["source-loading", "options", "lifecycle-events", "wrapper-contract"]
- },
- {
- "id": "pure-js-native-wrapper",
- "label": "Pure JS native component package",
- "kind": "native-wrapper",
- "wrapperId": "web",
- "packageName": "@flyfish-group/file-viewer-web",
- "entryFiles": ["packages/compat/web/src/index.ts", "apps/component-demo/manual-js.html"],
- "smokeScripts": ["verify:component-browser-smoke"],
- "preserves": ["source-loading", "options", "lifecycle-events", "wrapper-contract"]
- },
- {
- "id": "script-tag-iife",
- "label": "Script tag IIFE entry",
- "kind": "script-tag",
- "wrapperId": "web",
- "packageName": "@file-viewer/web",
- "entryFiles": ["packages/components/web/src/global.ts", "apps/component-demo/manual-iife.html"],
- "smokeScripts": ["verify:component-browser-smoke"],
- "preserves": ["source-loading", "options", "wrapper-contract"]
- }
- ],
- "cases": [
- {
- "id": "vue3-demo-markdown",
- "surface": "vue3-current-component",
- "smokeCaseId": "markdown-md",
- "sample": "markdown.md",
- "scripts": ["verify:demo-browser-smoke"],
- "features": ["source-loading", "options", "document-navigation", "layout-visual"],
- "assertions": ["load-complete", "dark-mode-readable", "search", "dom-snapshot", "visual-screenshot"]
- },
- {
- "id": "vue3-demo-pdf-operations",
- "surface": "vue3-current-component",
- "smokeCaseId": "pdf-document",
- "sample": "pdf.pdf",
- "scripts": ["verify:demo-browser-smoke"],
- "features": ["toolbar-operations", "document-navigation", "print-export", "layout-visual"],
- "assertions": ["page-navigation", "outline-or-thumbnails", "search", "zoom", "print-capability", "export-output"]
- },
- {
- "id": "vue3-demo-docx-print",
- "surface": "vue3-current-component",
- "smokeCaseId": "word-openxml-docx",
- "sample": "word.docx",
- "scripts": ["verify:demo-browser-smoke"],
- "features": ["print-export", "layout-visual", "document-navigation"],
- "assertions": ["paper-layout", "page-size", "document-only-content", "print-output", "export-output"]
- },
- {
- "id": "compare-page-sync-and-search",
- "surface": "compare-page",
- "smokeCaseId": "pdf-document",
- "sample": "pdf.pdf",
- "scripts": ["verify:demo-browser-smoke"],
- "features": ["source-loading", "document-navigation", "layout-visual"],
- "assertions": ["dual-panel", "synchronized-scroll", "shortcut-search", "line-location"]
- },
- {
- "id": "pure-web-native-viewer-docx",
- "surface": "pure-web-native-viewer",
- "smokeCaseId": "word-openxml-docx",
- "sample": "word.docx",
- "scripts": ["verify:component-browser-smoke"],
- "features": ["source-loading", "options", "lifecycle-events", "wrapper-contract"],
- "assertions": ["mount-viewer", "shared-controller-handle", "load-complete", "lifecycle-events"]
- },
- {
- "id": "react-native-wrapper-docx",
- "surface": "react-native-wrapper",
- "wrapperId": "react",
- "sample": "word.docx",
- "scripts": ["verify:component-browser-smoke"],
- "features": ["source-loading", "options", "lifecycle-events", "wrapper-contract"],
- "assertions": ["native-mount", "shared-controller-handle", "load-complete"]
- },
- {
- "id": "pure-js-native-wrapper-docx",
- "surface": "pure-js-native-wrapper",
- "wrapperId": "web",
- "sample": "word.docx",
- "scripts": ["verify:component-browser-smoke"],
- "features": ["source-loading", "options", "lifecycle-events", "wrapper-contract"],
- "assertions": ["native-mount", "mount-viewer", "load-complete"]
- },
- {
- "id": "script-tag-iife-markdown",
- "surface": "script-tag-iife",
- "wrapperId": "web",
- "sample": "preview.md",
- "scripts": ["verify:component-browser-smoke"],
- "features": ["source-loading", "options", "wrapper-contract"],
- "assertions": ["global-api", "mount-viewer", "load-complete"]
- }
- ],
- "requiredEvidence": [
- "dom-snapshot",
- "visual-screenshot",
- "event-callback",
- "capability-state",
- "options-behavior",
- "print-output",
- "export-output"
- ]
- }
|