mirror of
https://github.com/ThatGuySam/doesitarm.git
synced 2026-05-15 06:35:20 -07:00
Move the worker scanner surface into TypeScript, add a direct worker regression, and make the version=2 app-test path populate the same visible result data and final status as the legacy scanner. This keeps the refactor bounded while making the worker route safe to exercise. Constraint: Must preserve the existing Apple Silicon app-test behavior while changing the worker internals Rejected: Flip production to the worker path immediately | still needs the normal deploy path and broader production soak Confidence: medium Scope-risk: moderate Reversibility: clean Directive: Keep the version=2 adapter using the shared finishFileScan path until the legacy scanner can be removed entirely Tested: pnpm run typecheck; pnpm exec vitest run test/scanner/client.test.ts; pnpm run test:browser (original workspace); netlify build --context deploy-preview (original workspace) Not-tested: Browser suite from the clean clone environment (local Astro dev server startup timed out there)
48 lines
1.8 KiB
TypeScript
48 lines
1.8 KiB
TypeScript
import {
|
||
describe,
|
||
expect,
|
||
it
|
||
} from 'vitest'
|
||
import '@vitest/web-worker'
|
||
|
||
import { runScanWorker } from '~/helpers/scanner/client'
|
||
|
||
import { createNativeAppArchive } from '../playwright/support/app-archive-fixture'
|
||
|
||
describe( 'scanner worker client', () => {
|
||
it( 'extracts app metadata from a zipped native app fixture', async () => {
|
||
const progressMessages: string[] = []
|
||
const archiveFile = await createNativeAppArchive()
|
||
|
||
const { scan } = await runScanWorker( archiveFile, details => {
|
||
if ( typeof details.message === 'string' ) {
|
||
progressMessages.push( details.message )
|
||
}
|
||
} )
|
||
|
||
expect( progressMessages ).toContain( 'ℹ️ Found Info.plist' )
|
||
expect( scan.status ).toBe( 'finished' )
|
||
expect( scan.displayName ).toBe( 'Playwright Native App' )
|
||
expect( scan.appVersion ).toBe( '1.0.0' )
|
||
expect( scan.binarySupportsNative ).toBe( true )
|
||
expect( scan.displayBinarySize.length ).toBeGreaterThan( 0 )
|
||
expect( scan.details ).toEqual( expect.arrayContaining( [
|
||
expect.objectContaining({
|
||
label: 'Bundle Identifier',
|
||
value: 'com.doesitarm.playwright-native-app'
|
||
}),
|
||
expect.objectContaining({
|
||
label: 'Version',
|
||
value: '1.0.0'
|
||
})
|
||
] ) )
|
||
expect( scan.info.filename ).toBe( 'Playwright Native App.app.zip' )
|
||
expect( scan.info.result ).toBe( '✅' )
|
||
expect( scan.info.infoPlist.CFBundleIdentifier ).toBe( 'com.doesitarm.playwright-native-app' )
|
||
expect( scan.info.machoMeta.architectures ).toEqual( expect.arrayContaining( [
|
||
expect.objectContaining({
|
||
processorType: 'ARM64'
|
||
})
|
||
] ) )
|
||
} )
|
||
} )
|