Record combined migration, offline and cold-start verification
This commit is contained in:
208
perf/results/integration-autosave.json
Normal file
208
perf/results/integration-autosave.json
Normal file
@@ -0,0 +1,208 @@
|
||||
{
|
||||
"revision": "/home/josh/development/personal/ytplayer-codex/wt-integrate/frontend",
|
||||
"browsers": {
|
||||
"chromium": [
|
||||
{
|
||||
"scenario": "open-default",
|
||||
"supported": true,
|
||||
"saved": false,
|
||||
"bytes": 0,
|
||||
"calls": 0,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "open-save-first",
|
||||
"supported": true,
|
||||
"saved": true,
|
||||
"bytes": 30290,
|
||||
"calls": 1,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "open-audio-only",
|
||||
"supported": true,
|
||||
"saved": false,
|
||||
"bytes": 0,
|
||||
"calls": 0,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "open-prefer-stream",
|
||||
"supported": true,
|
||||
"saved": false,
|
||||
"bytes": 0,
|
||||
"calls": 0,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "playlist-add",
|
||||
"supported": true,
|
||||
"saved": true,
|
||||
"bytes": 30290,
|
||||
"calls": 1,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "playlist-add-setting-off",
|
||||
"supported": true,
|
||||
"saved": true,
|
||||
"bytes": 30290,
|
||||
"calls": 1,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "playlist-existing-add",
|
||||
"supported": true,
|
||||
"saved": true,
|
||||
"bytes": 30290,
|
||||
"calls": 1,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "playlist-boot",
|
||||
"supported": true,
|
||||
"saved": true,
|
||||
"bytes": 30290,
|
||||
"calls": 0,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "playlist-boot-off",
|
||||
"supported": true,
|
||||
"saved": false,
|
||||
"bytes": 0,
|
||||
"calls": 0,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "pinned-boot",
|
||||
"supported": true,
|
||||
"saved": true,
|
||||
"bytes": 30290,
|
||||
"calls": 0,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "settings-enable",
|
||||
"supported": true,
|
||||
"saved": true,
|
||||
"bytes": 30290,
|
||||
"calls": 1,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "settings-save-first",
|
||||
"supported": true,
|
||||
"saved": true,
|
||||
"bytes": 30290,
|
||||
"calls": 1,
|
||||
"errors": [
|
||||
"Cannot read properties of null (reading 'addEventListener')"
|
||||
]
|
||||
}
|
||||
],
|
||||
"webkit": [
|
||||
{
|
||||
"scenario": "open-default",
|
||||
"supported": false,
|
||||
"saved": false,
|
||||
"bytes": 0,
|
||||
"calls": 0,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "open-save-first",
|
||||
"supported": false,
|
||||
"saved": false,
|
||||
"bytes": 0,
|
||||
"calls": 0,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "open-audio-only",
|
||||
"supported": false,
|
||||
"saved": false,
|
||||
"bytes": 0,
|
||||
"calls": 0,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "open-prefer-stream",
|
||||
"supported": false,
|
||||
"saved": false,
|
||||
"bytes": 0,
|
||||
"calls": 0,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "playlist-add",
|
||||
"supported": false,
|
||||
"saved": false,
|
||||
"bytes": 0,
|
||||
"calls": 1,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "playlist-add-setting-off",
|
||||
"supported": false,
|
||||
"saved": false,
|
||||
"bytes": 0,
|
||||
"calls": 1,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "playlist-existing-add",
|
||||
"supported": false,
|
||||
"saved": false,
|
||||
"bytes": 0,
|
||||
"calls": 1,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "playlist-boot",
|
||||
"supported": false,
|
||||
"saved": false,
|
||||
"bytes": 0,
|
||||
"calls": 0,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "playlist-boot-off",
|
||||
"supported": false,
|
||||
"saved": false,
|
||||
"bytes": 0,
|
||||
"calls": 0,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "pinned-boot",
|
||||
"supported": false,
|
||||
"saved": false,
|
||||
"bytes": 0,
|
||||
"calls": 0,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "settings-enable",
|
||||
"supported": false,
|
||||
"saved": false,
|
||||
"bytes": 0,
|
||||
"calls": 1,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"scenario": "settings-save-first",
|
||||
"supported": false,
|
||||
"saved": false,
|
||||
"bytes": 0,
|
||||
"calls": 0,
|
||||
"errors": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"failures": [],
|
||||
"unsupported": [
|
||||
"webkit"
|
||||
],
|
||||
"buildTag": "7760d5727244"
|
||||
}
|
||||
41597
perf/results/integration-baseline.json
Normal file
41597
perf/results/integration-baseline.json
Normal file
File diff suppressed because it is too large
Load Diff
97
perf/results/integration-lazy.json
Normal file
97
perf/results/integration-lazy.json
Normal file
@@ -0,0 +1,97 @@
|
||||
{
|
||||
"results": [
|
||||
{
|
||||
"browser": "chromium",
|
||||
"sourceBuildTag": "7760d5727244",
|
||||
"classicSharedDefaults": true,
|
||||
"cssOrderPreserved": true,
|
||||
"settingsSearch": true,
|
||||
"carControls": 4,
|
||||
"offlineFeature": true,
|
||||
"firstUseNetwork": 0,
|
||||
"layoutsOffline": [
|
||||
"glass-stage",
|
||||
"bento-hub",
|
||||
"f7-swipe",
|
||||
"classic"
|
||||
],
|
||||
"pinned": true,
|
||||
"compatibleUnexecutedNewURL": true,
|
||||
"incompatibleN1ReloadRequired": true,
|
||||
"stagedN1": true,
|
||||
"appEvictionN1Offline": true,
|
||||
"playbackGuard": true,
|
||||
"prePaintLayout": true,
|
||||
"offlineSettingsPanels": true,
|
||||
"scriptErrors": [],
|
||||
"offlineTransportErrors": []
|
||||
},
|
||||
{
|
||||
"browser": "webkit",
|
||||
"sourceBuildTag": "7760d5727244",
|
||||
"classicSharedDefaults": true,
|
||||
"cssOrderPreserved": true,
|
||||
"settingsSearch": true,
|
||||
"carControls": 4,
|
||||
"offlineFeature": true,
|
||||
"firstUseNetwork": 0,
|
||||
"layoutsOffline": [
|
||||
"glass-stage",
|
||||
"bento-hub",
|
||||
"f7-swipe",
|
||||
"classic"
|
||||
],
|
||||
"pinned": true,
|
||||
"compatibleUnexecutedNewURL": true,
|
||||
"incompatibleN1ReloadRequired": true,
|
||||
"stagedN1": true,
|
||||
"appEvictionN1Offline": true,
|
||||
"playbackGuard": true,
|
||||
"prePaintLayout": true,
|
||||
"offlineSettingsPanels": true,
|
||||
"scriptErrors": [],
|
||||
"offlineTransportErrors": [
|
||||
{
|
||||
"message": "TypeError: Load failed",
|
||||
"disconnected": true
|
||||
},
|
||||
{
|
||||
"message": "/127.0.0.1:39913/api/version.",
|
||||
"disconnected": true
|
||||
},
|
||||
{
|
||||
"message": "TypeError: Load failed",
|
||||
"disconnected": true
|
||||
},
|
||||
{
|
||||
"message": "/127.0.0.1:39913/api/recommendations?fp=163577c02a53bc40.",
|
||||
"disconnected": true
|
||||
},
|
||||
{
|
||||
"message": "TypeError: Load failed",
|
||||
"disconnected": true
|
||||
},
|
||||
{
|
||||
"message": "/127.0.0.1:39913/api/version.",
|
||||
"disconnected": true
|
||||
},
|
||||
{
|
||||
"message": "TypeError: Load failed",
|
||||
"disconnected": true
|
||||
},
|
||||
{
|
||||
"message": "/127.0.0.1:39913/api/recommendations?fp=163577c02a53bc40.",
|
||||
"disconnected": true
|
||||
},
|
||||
{
|
||||
"message": "TypeError: Load failed",
|
||||
"disconnected": true
|
||||
},
|
||||
{
|
||||
"message": "/127.0.0.1:39913/api/version.",
|
||||
"disconnected": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
41
perf/results/integration-migration-lossy.json
Normal file
41
perf/results/integration-migration-lossy.json
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"commit": "b77938a",
|
||||
"results": [
|
||||
{
|
||||
"browser": "chromium",
|
||||
"oldTag": "1175f1a1d2c1",
|
||||
"newTag": "7760d5727244",
|
||||
"banners": 1,
|
||||
"updateReloads": 1,
|
||||
"cachedFiles": 132,
|
||||
"durationMs": 27587,
|
||||
"wireBytes": 642140,
|
||||
"offline": true,
|
||||
"legacyURLs": 21,
|
||||
"profile": "lossy",
|
||||
"userInitiatedOnly": true,
|
||||
"playbackGuard": true,
|
||||
"evictionRepair": true,
|
||||
"incrementalRefresh": true,
|
||||
"offlineTransportErrors": 0
|
||||
},
|
||||
{
|
||||
"browser": "webkit",
|
||||
"oldTag": "1175f1a1d2c1",
|
||||
"newTag": "7760d5727244",
|
||||
"banners": 1,
|
||||
"updateReloads": 1,
|
||||
"cachedFiles": 132,
|
||||
"durationMs": 24285,
|
||||
"wireBytes": 748999,
|
||||
"offline": true,
|
||||
"legacyURLs": 21,
|
||||
"profile": "lossy",
|
||||
"userInitiatedOnly": true,
|
||||
"playbackGuard": true,
|
||||
"evictionRepair": true,
|
||||
"incrementalRefresh": true,
|
||||
"offlineTransportErrors": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
41
perf/results/integration-migration-unthrottled.json
Normal file
41
perf/results/integration-migration-unthrottled.json
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"commit": "b77938a",
|
||||
"results": [
|
||||
{
|
||||
"browser": "chromium",
|
||||
"oldTag": "1175f1a1d2c1",
|
||||
"newTag": "7760d5727244",
|
||||
"banners": 1,
|
||||
"updateReloads": 1,
|
||||
"cachedFiles": 132,
|
||||
"durationMs": 10957,
|
||||
"wireBytes": 653223,
|
||||
"offline": true,
|
||||
"legacyURLs": 21,
|
||||
"profile": "unthrottled",
|
||||
"userInitiatedOnly": true,
|
||||
"playbackGuard": true,
|
||||
"evictionRepair": true,
|
||||
"incrementalRefresh": true,
|
||||
"offlineTransportErrors": 0
|
||||
},
|
||||
{
|
||||
"browser": "webkit",
|
||||
"oldTag": "1175f1a1d2c1",
|
||||
"newTag": "7760d5727244",
|
||||
"banners": 1,
|
||||
"updateReloads": 1,
|
||||
"cachedFiles": 132,
|
||||
"durationMs": 9972,
|
||||
"wireBytes": 775494,
|
||||
"offline": true,
|
||||
"legacyURLs": 21,
|
||||
"profile": "unthrottled",
|
||||
"userInitiatedOnly": true,
|
||||
"playbackGuard": true,
|
||||
"evictionRepair": true,
|
||||
"incrementalRefresh": true,
|
||||
"offlineTransportErrors": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
8051
perf/results/integration-offline.json
Normal file
8051
perf/results/integration-offline.json
Normal file
File diff suppressed because it is too large
Load Diff
708
perf/results/integration-settings.json
Normal file
708
perf/results/integration-settings.json
Normal file
@@ -0,0 +1,708 @@
|
||||
{
|
||||
"revision": "6ae81d1024caa42931d47abe820417cf63d0fe17",
|
||||
"oldTag": "1175f1a1d2c1",
|
||||
"results": [
|
||||
{
|
||||
"engine": "chromium",
|
||||
"errors": [
|
||||
"Cannot read properties of null (reading 'addEventListener')",
|
||||
"Cannot read properties of null (reading 'addEventListener')"
|
||||
],
|
||||
"profileChecks": [
|
||||
{
|
||||
"stage": "older timestamp ignored",
|
||||
"serverUpdatedAt": 100,
|
||||
"localSyncedAt": 200,
|
||||
"saveBeforePlay": true
|
||||
},
|
||||
{
|
||||
"stage": "older settings with newer timestamp adopted",
|
||||
"serverUpdatedAt": 300,
|
||||
"localSyncedAt": 200,
|
||||
"saveBeforePlay": false
|
||||
}
|
||||
],
|
||||
"behaviour": [
|
||||
{
|
||||
"stage": "old",
|
||||
"supported": true,
|
||||
"bytes": 30290,
|
||||
"cached": true,
|
||||
"localPlayback": true
|
||||
},
|
||||
{
|
||||
"stage": "upgraded",
|
||||
"supported": true,
|
||||
"bytes": 30290,
|
||||
"cached": true,
|
||||
"localPlayback": true
|
||||
}
|
||||
],
|
||||
"diff": [
|
||||
{
|
||||
"key": "quality",
|
||||
"before": "360p",
|
||||
"after": "360p",
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "volume",
|
||||
"before": 1,
|
||||
"after": 1,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "audioOnly",
|
||||
"before": false,
|
||||
"after": false,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "autoPreload",
|
||||
"before": true,
|
||||
"after": true,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "p2pShare",
|
||||
"before": true,
|
||||
"after": true,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "p2pReceive",
|
||||
"before": true,
|
||||
"after": true,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "saveBeforePlay",
|
||||
"before": true,
|
||||
"after": true,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "repeatMode",
|
||||
"before": "all",
|
||||
"after": "all",
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "loopOne",
|
||||
"before": true,
|
||||
"after": true,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "shuffle",
|
||||
"before": false,
|
||||
"after": false,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "theme",
|
||||
"before": "light",
|
||||
"after": "light",
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "fontScale",
|
||||
"before": "large",
|
||||
"after": "large",
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "levelVolume",
|
||||
"before": false,
|
||||
"after": false,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "liveAudioIOS",
|
||||
"before": false,
|
||||
"after": false,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "parallelSaves",
|
||||
"before": 2,
|
||||
"after": 2,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "density",
|
||||
"before": "compact",
|
||||
"after": "compact",
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "perfMode",
|
||||
"before": true,
|
||||
"after": true,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "reduceMotion",
|
||||
"before": true,
|
||||
"after": true,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "layout",
|
||||
"before": "f7-swipe",
|
||||
"after": "f7-swipe",
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "autoBackupEnabled",
|
||||
"before": false,
|
||||
"after": false,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "autoBackupIntervalDays",
|
||||
"before": 7,
|
||||
"after": 7,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "serviceVideo",
|
||||
"before": false,
|
||||
"after": false,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "foldedCards",
|
||||
"before": {},
|
||||
"after": {},
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "eq",
|
||||
"before": {
|
||||
"preset": "bass",
|
||||
"g": [
|
||||
5,
|
||||
7,
|
||||
5,
|
||||
3,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"after": {
|
||||
"preset": "bass",
|
||||
"g": [
|
||||
5,
|
||||
7,
|
||||
5,
|
||||
3,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
}
|
||||
],
|
||||
"old": {
|
||||
"quality": "360p",
|
||||
"volume": 1,
|
||||
"audioOnly": false,
|
||||
"autoPreload": true,
|
||||
"p2pShare": true,
|
||||
"p2pReceive": true,
|
||||
"saveBeforePlay": true,
|
||||
"repeatMode": "all",
|
||||
"loopOne": true,
|
||||
"shuffle": false,
|
||||
"theme": "light",
|
||||
"fontScale": "large",
|
||||
"levelVolume": false,
|
||||
"liveAudioIOS": false,
|
||||
"parallelSaves": 2,
|
||||
"density": "compact",
|
||||
"perfMode": true,
|
||||
"reduceMotion": true,
|
||||
"layout": "f7-swipe",
|
||||
"autoBackupEnabled": false,
|
||||
"autoBackupIntervalDays": 7,
|
||||
"serviceVideo": false,
|
||||
"foldedCards": {},
|
||||
"eq": {
|
||||
"preset": "bass",
|
||||
"g": [
|
||||
5,
|
||||
7,
|
||||
5,
|
||||
3,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
}
|
||||
},
|
||||
"oldUI": {
|
||||
"setSaveBeforePlay": true,
|
||||
"setAutoPreload": true,
|
||||
"setAudioOnly": false,
|
||||
"setQuality": "360p",
|
||||
"setRepeat": true,
|
||||
"setLoopOne": true,
|
||||
"setTheme": "light",
|
||||
"setFont": "large",
|
||||
"setDensity": "compact",
|
||||
"setPerf": true,
|
||||
"setMotion": true,
|
||||
"setParallelSaves": "2",
|
||||
"setLevelVolume": false,
|
||||
"setLayout": "f7-swipe"
|
||||
},
|
||||
"oldRaw": "{\"playlists\":[],\"history\":[],\"queue\":[],\"customVideos\":[],\"pinnedPlaylists\":[],\"settings\":{\"quality\":\"360p\",\"volume\":1,\"audioOnly\":false,\"autoPreload\":true,\"p2pShare\":true,\"p2pReceive\":true,\"saveBeforePlay\":true,\"repeatMode\":\"all\",\"loopOne\":true,\"shuffle\":false,\"theme\":\"light\",\"fontScale\":\"large\",\"levelVolume\":false,\"liveAudioIOS\":false,\"parallelSaves\":2,\"density\":\"compact\",\"perfMode\":true,\"reduceMotion\":true,\"layout\":\"f7-swipe\",\"autoBackupEnabled\":false,\"autoBackupIntervalDays\":7,\"serviceVideo\":false,\"foldedCards\":{},\"eq\":{\"preset\":\"bass\",\"g\":[5,7,5,3,1,0,0,0,0,0]}},\"resumePositions\":{},\"rememberPos\":{},\"playCount\":{},\"abMarkers\":{},\"bookmarks\":{},\"lyricOffsets\":{},\"stats\":null,\"lastAutoBackup\":0,\"profile\":null}",
|
||||
"newTag": "7760d5727244",
|
||||
"upgraded": {
|
||||
"quality": "360p",
|
||||
"volume": 1,
|
||||
"audioOnly": false,
|
||||
"autoPreload": true,
|
||||
"p2pShare": true,
|
||||
"p2pReceive": true,
|
||||
"saveBeforePlay": true,
|
||||
"repeatMode": "all",
|
||||
"loopOne": true,
|
||||
"shuffle": false,
|
||||
"theme": "light",
|
||||
"fontScale": "large",
|
||||
"levelVolume": false,
|
||||
"liveAudioIOS": false,
|
||||
"parallelSaves": 2,
|
||||
"density": "compact",
|
||||
"perfMode": true,
|
||||
"reduceMotion": true,
|
||||
"layout": "f7-swipe",
|
||||
"autoBackupEnabled": false,
|
||||
"autoBackupIntervalDays": 7,
|
||||
"serviceVideo": false,
|
||||
"foldedCards": {},
|
||||
"eq": {
|
||||
"preset": "bass",
|
||||
"g": [
|
||||
5,
|
||||
7,
|
||||
5,
|
||||
3,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
}
|
||||
},
|
||||
"newRaw": "{\"playlists\":[],\"history\":[{\"id\":\"benchmedia01\",\"title\":\"Persisted settings local clip\",\"channel\":\"Settings probe\",\"channelId\":\"\",\"channelUrl\":\"\",\"duration\":3,\"thumbnail\":\"\"}],\"queue\":[],\"customVideos\":[],\"pinnedPlaylists\":[],\"resumePositions\":{},\"rememberPos\":{},\"playCount\":{\"benchmedia01\":1},\"abMarkers\":{},\"bookmarks\":{},\"lyricOffsets\":{},\"stats\":null,\"lastAutoBackup\":0,\"settings\":{\"quality\":\"360p\",\"volume\":1,\"audioOnly\":false,\"autoPreload\":true,\"p2pShare\":true,\"p2pReceive\":true,\"saveBeforePlay\":true,\"repeatMode\":\"all\",\"loopOne\":true,\"shuffle\":false,\"theme\":\"light\",\"fontScale\":\"large\",\"levelVolume\":false,\"liveAudioIOS\":false,\"parallelSaves\":2,\"density\":\"compact\",\"perfMode\":true,\"reduceMotion\":true,\"layout\":\"f7-swipe\",\"autoBackupEnabled\":false,\"autoBackupIntervalDays\":7,\"serviceVideo\":false,\"foldedCards\":{},\"eq\":{\"preset\":\"bass\",\"g\":[5,7,5,3,1,0,0,0,0,0]}},\"profile\":null}",
|
||||
"newUI": {
|
||||
"setSaveBeforePlay": true,
|
||||
"setAutoPreload": true,
|
||||
"setAudioOnly": false,
|
||||
"setQuality": "360p",
|
||||
"setRepeat": true,
|
||||
"setLoopOne": true,
|
||||
"setTheme": "light",
|
||||
"setFont": "large",
|
||||
"setDensity": "compact",
|
||||
"setPerf": true,
|
||||
"setMotion": true,
|
||||
"setParallelSaves": "2",
|
||||
"setLevelVolume": false,
|
||||
"setLayout": "f7-swipe"
|
||||
},
|
||||
"importPreserved": true,
|
||||
"userDataGets": 0
|
||||
},
|
||||
{
|
||||
"engine": "webkit",
|
||||
"errors": [],
|
||||
"profileChecks": [
|
||||
{
|
||||
"stage": "older timestamp ignored",
|
||||
"serverUpdatedAt": 100,
|
||||
"localSyncedAt": 200,
|
||||
"saveBeforePlay": true
|
||||
},
|
||||
{
|
||||
"stage": "older settings with newer timestamp adopted",
|
||||
"serverUpdatedAt": 300,
|
||||
"localSyncedAt": 200,
|
||||
"saveBeforePlay": false
|
||||
}
|
||||
],
|
||||
"behaviour": [
|
||||
{
|
||||
"stage": "old",
|
||||
"supported": false,
|
||||
"note": "Native OPFS unavailable; no shim"
|
||||
},
|
||||
{
|
||||
"stage": "upgraded",
|
||||
"supported": false,
|
||||
"note": "Native OPFS unavailable; no shim"
|
||||
}
|
||||
],
|
||||
"diff": [
|
||||
{
|
||||
"key": "quality",
|
||||
"before": "360p",
|
||||
"after": "360p",
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "volume",
|
||||
"before": 1,
|
||||
"after": 1,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "audioOnly",
|
||||
"before": false,
|
||||
"after": false,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "autoPreload",
|
||||
"before": true,
|
||||
"after": true,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "p2pShare",
|
||||
"before": true,
|
||||
"after": true,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "p2pReceive",
|
||||
"before": true,
|
||||
"after": true,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "saveBeforePlay",
|
||||
"before": true,
|
||||
"after": true,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "repeatMode",
|
||||
"before": "all",
|
||||
"after": "all",
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "loopOne",
|
||||
"before": true,
|
||||
"after": true,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "shuffle",
|
||||
"before": false,
|
||||
"after": false,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "theme",
|
||||
"before": "light",
|
||||
"after": "light",
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "fontScale",
|
||||
"before": "large",
|
||||
"after": "large",
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "levelVolume",
|
||||
"before": false,
|
||||
"after": false,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "liveAudioIOS",
|
||||
"before": false,
|
||||
"after": false,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "parallelSaves",
|
||||
"before": 2,
|
||||
"after": 2,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "density",
|
||||
"before": "compact",
|
||||
"after": "compact",
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "perfMode",
|
||||
"before": true,
|
||||
"after": true,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "reduceMotion",
|
||||
"before": true,
|
||||
"after": true,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "layout",
|
||||
"before": "f7-swipe",
|
||||
"after": "f7-swipe",
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "autoBackupEnabled",
|
||||
"before": false,
|
||||
"after": false,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "autoBackupIntervalDays",
|
||||
"before": 7,
|
||||
"after": 7,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "serviceVideo",
|
||||
"before": false,
|
||||
"after": false,
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "foldedCards",
|
||||
"before": {},
|
||||
"after": {},
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
},
|
||||
{
|
||||
"key": "eq",
|
||||
"before": {
|
||||
"preset": "bass",
|
||||
"g": [
|
||||
5,
|
||||
7,
|
||||
5,
|
||||
3,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"after": {
|
||||
"preset": "bass",
|
||||
"g": [
|
||||
5,
|
||||
7,
|
||||
5,
|
||||
3,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"equal": true,
|
||||
"expectedMigration": false
|
||||
}
|
||||
],
|
||||
"old": {
|
||||
"quality": "360p",
|
||||
"volume": 1,
|
||||
"audioOnly": false,
|
||||
"autoPreload": true,
|
||||
"p2pShare": true,
|
||||
"p2pReceive": true,
|
||||
"saveBeforePlay": true,
|
||||
"repeatMode": "all",
|
||||
"loopOne": true,
|
||||
"shuffle": false,
|
||||
"theme": "light",
|
||||
"fontScale": "large",
|
||||
"levelVolume": false,
|
||||
"liveAudioIOS": false,
|
||||
"parallelSaves": 2,
|
||||
"density": "compact",
|
||||
"perfMode": true,
|
||||
"reduceMotion": true,
|
||||
"layout": "f7-swipe",
|
||||
"autoBackupEnabled": false,
|
||||
"autoBackupIntervalDays": 7,
|
||||
"serviceVideo": false,
|
||||
"foldedCards": {},
|
||||
"eq": {
|
||||
"preset": "bass",
|
||||
"g": [
|
||||
5,
|
||||
7,
|
||||
5,
|
||||
3,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
}
|
||||
},
|
||||
"oldUI": {
|
||||
"setSaveBeforePlay": true,
|
||||
"setAutoPreload": true,
|
||||
"setAudioOnly": false,
|
||||
"setQuality": "360p",
|
||||
"setRepeat": true,
|
||||
"setLoopOne": true,
|
||||
"setTheme": "light",
|
||||
"setFont": "large",
|
||||
"setDensity": "compact",
|
||||
"setPerf": true,
|
||||
"setMotion": true,
|
||||
"setParallelSaves": "2",
|
||||
"setLevelVolume": false,
|
||||
"setLayout": "f7-swipe"
|
||||
},
|
||||
"oldRaw": "{\"playlists\":[],\"history\":[],\"queue\":[],\"customVideos\":[],\"pinnedPlaylists\":[],\"settings\":{\"quality\":\"360p\",\"volume\":1,\"audioOnly\":false,\"autoPreload\":true,\"p2pShare\":true,\"p2pReceive\":true,\"saveBeforePlay\":true,\"repeatMode\":\"all\",\"loopOne\":true,\"shuffle\":false,\"theme\":\"light\",\"fontScale\":\"large\",\"levelVolume\":false,\"liveAudioIOS\":false,\"parallelSaves\":2,\"density\":\"compact\",\"perfMode\":true,\"reduceMotion\":true,\"layout\":\"f7-swipe\",\"autoBackupEnabled\":false,\"autoBackupIntervalDays\":7,\"serviceVideo\":false,\"foldedCards\":{},\"eq\":{\"preset\":\"bass\",\"g\":[5,7,5,3,1,0,0,0,0,0]}},\"resumePositions\":{},\"rememberPos\":{},\"playCount\":{},\"abMarkers\":{},\"bookmarks\":{},\"lyricOffsets\":{},\"stats\":null,\"lastAutoBackup\":0,\"profile\":null}",
|
||||
"newTag": "7760d5727244",
|
||||
"upgraded": {
|
||||
"quality": "360p",
|
||||
"volume": 1,
|
||||
"audioOnly": false,
|
||||
"autoPreload": true,
|
||||
"p2pShare": true,
|
||||
"p2pReceive": true,
|
||||
"saveBeforePlay": true,
|
||||
"repeatMode": "all",
|
||||
"loopOne": true,
|
||||
"shuffle": false,
|
||||
"theme": "light",
|
||||
"fontScale": "large",
|
||||
"levelVolume": false,
|
||||
"liveAudioIOS": false,
|
||||
"parallelSaves": 2,
|
||||
"density": "compact",
|
||||
"perfMode": true,
|
||||
"reduceMotion": true,
|
||||
"layout": "f7-swipe",
|
||||
"autoBackupEnabled": false,
|
||||
"autoBackupIntervalDays": 7,
|
||||
"serviceVideo": false,
|
||||
"foldedCards": {},
|
||||
"eq": {
|
||||
"preset": "bass",
|
||||
"g": [
|
||||
5,
|
||||
7,
|
||||
5,
|
||||
3,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
}
|
||||
},
|
||||
"newRaw": "{\"playlists\":[],\"history\":[],\"queue\":[],\"customVideos\":[],\"pinnedPlaylists\":[],\"settings\":{\"quality\":\"360p\",\"volume\":1,\"audioOnly\":false,\"autoPreload\":true,\"p2pShare\":true,\"p2pReceive\":true,\"saveBeforePlay\":true,\"repeatMode\":\"all\",\"loopOne\":true,\"shuffle\":false,\"theme\":\"light\",\"fontScale\":\"large\",\"levelVolume\":false,\"liveAudioIOS\":false,\"parallelSaves\":2,\"density\":\"compact\",\"perfMode\":true,\"reduceMotion\":true,\"layout\":\"f7-swipe\",\"autoBackupEnabled\":false,\"autoBackupIntervalDays\":7,\"serviceVideo\":false,\"foldedCards\":{},\"eq\":{\"preset\":\"bass\",\"g\":[5,7,5,3,1,0,0,0,0,0]}},\"resumePositions\":{},\"rememberPos\":{},\"playCount\":{},\"abMarkers\":{},\"bookmarks\":{},\"lyricOffsets\":{},\"stats\":null,\"lastAutoBackup\":0,\"profile\":null}",
|
||||
"newUI": {
|
||||
"setSaveBeforePlay": true,
|
||||
"setAutoPreload": true,
|
||||
"setAudioOnly": false,
|
||||
"setQuality": "360p",
|
||||
"setRepeat": true,
|
||||
"setLoopOne": true,
|
||||
"setTheme": "light",
|
||||
"setFont": "large",
|
||||
"setDensity": "compact",
|
||||
"setPerf": true,
|
||||
"setMotion": true,
|
||||
"setParallelSaves": "2",
|
||||
"setLevelVolume": false,
|
||||
"setLayout": "f7-swipe"
|
||||
},
|
||||
"importPreserved": true,
|
||||
"userDataGets": 0
|
||||
}
|
||||
],
|
||||
"failures": [],
|
||||
"unsupported": [
|
||||
"webkit",
|
||||
"webkit"
|
||||
]
|
||||
}
|
||||
158
perf/results/integration-summary.json
Normal file
158
perf/results/integration-summary.json
Normal file
@@ -0,0 +1,158 @@
|
||||
{
|
||||
"sourceCommit": "6ae81d1024caa42931d47abe820417cf63d0fe17",
|
||||
"buildTag": "7760d5727244",
|
||||
"profiles": [
|
||||
{
|
||||
"engine": "chromium",
|
||||
"profile": "lte",
|
||||
"appBodyCounts": [
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"coldTimingEvidence": [
|
||||
{
|
||||
"paintProxyMs": 1361,
|
||||
"workerStartMs": 6570,
|
||||
"backgroundGlassStartMs": 7100
|
||||
},
|
||||
{
|
||||
"paintProxyMs": 1410,
|
||||
"workerStartMs": 6776,
|
||||
"backgroundGlassStartMs": 7341
|
||||
},
|
||||
{
|
||||
"paintProxyMs": 1362,
|
||||
"workerStartMs": 6444,
|
||||
"backgroundGlassStartMs": 6800
|
||||
},
|
||||
{
|
||||
"paintProxyMs": 1354,
|
||||
"workerStartMs": 6457,
|
||||
"backgroundGlassStartMs": 6804
|
||||
},
|
||||
{
|
||||
"paintProxyMs": 1379,
|
||||
"workerStartMs": 6523,
|
||||
"backgroundGlassStartMs": 6901
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"engine": "chromium",
|
||||
"profile": "lossy",
|
||||
"appBodyCounts": [
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"coldTimingEvidence": [
|
||||
{
|
||||
"paintProxyMs": 1995,
|
||||
"workerStartMs": 10509,
|
||||
"backgroundGlassStartMs": 11084
|
||||
},
|
||||
{
|
||||
"paintProxyMs": 2067,
|
||||
"workerStartMs": 10491,
|
||||
"backgroundGlassStartMs": 10910
|
||||
},
|
||||
{
|
||||
"paintProxyMs": 2007,
|
||||
"workerStartMs": 10436,
|
||||
"backgroundGlassStartMs": 10864
|
||||
},
|
||||
{
|
||||
"paintProxyMs": 1975,
|
||||
"workerStartMs": 10476,
|
||||
"backgroundGlassStartMs": 10864
|
||||
},
|
||||
{
|
||||
"paintProxyMs": 1991,
|
||||
"workerStartMs": 10393,
|
||||
"backgroundGlassStartMs": 10731
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"engine": "webkit",
|
||||
"profile": "lte",
|
||||
"appBodyCounts": [
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"coldTimingEvidence": [
|
||||
{
|
||||
"paintProxyMs": 936,
|
||||
"workerStartMs": 2989,
|
||||
"backgroundGlassStartMs": 6637
|
||||
},
|
||||
{
|
||||
"paintProxyMs": 911,
|
||||
"workerStartMs": 2323,
|
||||
"backgroundGlassStartMs": 5892
|
||||
},
|
||||
{
|
||||
"paintProxyMs": 905,
|
||||
"workerStartMs": 2316,
|
||||
"backgroundGlassStartMs": 5880
|
||||
},
|
||||
{
|
||||
"paintProxyMs": 908,
|
||||
"workerStartMs": 2320,
|
||||
"backgroundGlassStartMs": 5889
|
||||
},
|
||||
{
|
||||
"paintProxyMs": 911,
|
||||
"workerStartMs": 2321,
|
||||
"backgroundGlassStartMs": 5882
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"engine": "webkit",
|
||||
"profile": "lossy",
|
||||
"appBodyCounts": [
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"coldTimingEvidence": [
|
||||
{
|
||||
"paintProxyMs": 2861,
|
||||
"workerStartMs": 5659,
|
||||
"backgroundGlassStartMs": 17358
|
||||
},
|
||||
{
|
||||
"paintProxyMs": 2759,
|
||||
"workerStartMs": 6572,
|
||||
"backgroundGlassStartMs": 18065
|
||||
},
|
||||
{
|
||||
"paintProxyMs": 2716,
|
||||
"workerStartMs": 5621,
|
||||
"backgroundGlassStartMs": 15592
|
||||
},
|
||||
{
|
||||
"paintProxyMs": 2759,
|
||||
"workerStartMs": 6562,
|
||||
"backgroundGlassStartMs": 18042
|
||||
},
|
||||
{
|
||||
"paintProxyMs": 2711,
|
||||
"workerStartMs": 5611,
|
||||
"backgroundGlassStartMs": 15583
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
56
perf/results/integration-verification.json
Normal file
56
perf/results/integration-verification.json
Normal file
@@ -0,0 +1,56 @@
|
||||
[
|
||||
{
|
||||
"name": "offline",
|
||||
"command": "node perf/offline-complete.mjs --browser all --conditions --out perf/results/integration-offline.json",
|
||||
"exitCode": 0,
|
||||
"seconds": 37.9
|
||||
},
|
||||
{
|
||||
"name": "migration-lossy",
|
||||
"command": "node perf/migration.mjs --browser all --profile lossy --out perf/results/integration-migration-lossy.json",
|
||||
"exitCode": 0,
|
||||
"seconds": 121.1
|
||||
},
|
||||
{
|
||||
"name": "migration-unthrottled",
|
||||
"command": "node perf/migration.mjs --browser all --profile unthrottled --out perf/results/integration-migration-unthrottled.json",
|
||||
"exitCode": 0,
|
||||
"seconds": 30.1
|
||||
},
|
||||
{
|
||||
"name": "lazy",
|
||||
"command": "node perf/lazy.mjs --browser all",
|
||||
"exitCode": 0,
|
||||
"seconds": 56.5
|
||||
},
|
||||
{
|
||||
"name": "hidden-timers",
|
||||
"command": "node perf/hidden-timers.mjs",
|
||||
"exitCode": 0,
|
||||
"seconds": 4.4
|
||||
},
|
||||
{
|
||||
"name": "ui-geometry",
|
||||
"command": "node perf/ui-geometry.mjs",
|
||||
"exitCode": 0,
|
||||
"seconds": 75.3
|
||||
},
|
||||
{
|
||||
"name": "ui-icons",
|
||||
"command": "node perf/ui-icons.mjs",
|
||||
"exitCode": 0,
|
||||
"seconds": 19.9
|
||||
},
|
||||
{
|
||||
"name": "autosave",
|
||||
"command": "node perf/autosave.mjs --allow-unsupported-webkit --out perf/results/integration-autosave.json",
|
||||
"exitCode": 0,
|
||||
"seconds": 37.6
|
||||
},
|
||||
{
|
||||
"name": "settings",
|
||||
"command": "node perf/settings-persist.mjs --browser all --target HEAD --allow-unsupported-webkit --out perf/results/integration-settings.json",
|
||||
"exitCode": 0,
|
||||
"seconds": 29.4
|
||||
}
|
||||
]
|
||||
51
plans/integration-report.md
Normal file
51
plans/integration-report.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# Integration verification — 2026-10-09
|
||||
|
||||
Merged Phase 6 → hygiene → settings → autosave into `codex/integrate`; measured `6ae81d1`, build `7760d5727244`.
|
||||
|
||||
Reconciled response capture, contracts/pinning, resumable completion, Save-Data, stale-header sanitization and cache-poisoning tests. Manifest preserves exclusions/direct hashes, CSP hashes and rollback flags. Harness documentation survives.
|
||||
|
||||
Executed:
|
||||
|
||||
```sh
|
||||
node perf/baseline.mjs --runs 5 --browser all --profile all --scenario all --assert-cold --compare perf/results/final-2026-10-08.json --out perf/results/integration-baseline.json
|
||||
```
|
||||
|
||||
Five-run medians; Phase 5 → combination. Wire values are bytes.
|
||||
|
||||
| Engine/profile | Cold FCP ms | Cold wire B | Positive app.js bodies |
|
||||
|---|---:|---:|---:|
|
||||
| Chromium LTE | 1356 → 1360 | 651,012 → 663,611 | 1 × 5 |
|
||||
| Chromium LOSSY | 2052 → 1992 | 651,096 → 663,611 | 1 × 5 |
|
||||
| Webkit LTE | 1739 → 895 | 1,097,048 → 999,794 | 1 × 5 |
|
||||
| Webkit LOSSY | 4303 → 2744 | 1,105,402 → 1,006,620 | 1 × 5 |
|
||||
|
||||
| Engine/profile | Warm boot ms | Offline boot ms | Core update B | CSS update B | Feature update B |
|
||||
|---|---:|---:|---:|---:|---:|
|
||||
| Chromium LTE | 410 → 395 | 185 → 236 | 125795 → 126116 | 35363 → 43741 | 33408 → 41769 |
|
||||
| Chromium LOSSY | 403 → 386 | 189 → 200 | 125795 → 126116 | 35363 → 43741 | 33408 → 41769 |
|
||||
| Webkit LTE | 83 → 83 | 86 → 78 | 147259 → 148181 | 45659 → 57529 | 43318 → 42636 |
|
||||
| Webkit LOSSY | 85 → 80 | 81 → 84 | 147259 → 148181 | 43705 → 54421 | 41364 → 42636 |
|
||||
|
||||
All cold samples start worker/background transfers after paint: WebKit/LTE sample paint 936 ms, worker 2,989 ms, background CSS 6,637 ms. Controlled-page resumptions remain event-driven.
|
||||
|
||||
CSS overhead includes `/sw.js?v=…` (9,439 B) and larger sync-core responses. Chromium cold bytes increase ~2%; LTE offline boot increases 51 ms. These costs remain.
|
||||
|
||||
| Verification | Result |
|
||||
|---|---|
|
||||
| Frontend / server / measurement suites | 242 / 187 / 3 pass; zero failures |
|
||||
| Migration: all engines, lossy + unthrottled | pass; one banner/reload, playback guard, offline |
|
||||
| Offline-complete: all engines + interruption/Save-Data/two tabs | 102/102 runtime files, missing/failures zero |
|
||||
| Lazy / hidden timers | pass; warmed first-use network zero |
|
||||
| UI geometry / icons | 384 / 24 cases pass |
|
||||
| Autosave / persisted settings | Chromium native OPFS pass; both engines preserve 24 keys |
|
||||
|
||||
Actual output excerpts:
|
||||
|
||||
```text
|
||||
ℹ pass 242
|
||||
ℹ fail 0
|
||||
after: 384 cases; 0 failed checks
|
||||
Result: ALL ASSERTIONS PASSED
|
||||
```
|
||||
|
||||
Evidence: `perf/results/integration-*.json`, including commands/exits. Linux WebKit lacks native OPFS; offline tests use the documented proxy workaround. Settings records an existing null-listener error. Expected offline API errors are tolerated; asset failures are not. iPhone checks: OPFS, suspension/resumption, quota/eviction, safe areas, locked-screen audio.
|
||||
Reference in New Issue
Block a user