@@ -289,6 +289,87 @@ test('parseArgs supports explicit passthrough boundary for react-devtools global
289289 assert . deepEqual ( parsed . positionals , [ 'status' , '--json' ] ) ;
290290} ) ;
291291
292+ test ( 'parseArgs preserves cdp arguments as passthrough positionals' , ( ) => {
293+ const parsed = parseArgs (
294+ [
295+ 'cdp' ,
296+ 'memory' ,
297+ 'snapshot' ,
298+ 'diff' ,
299+ '--base' ,
300+ 'ms_1' ,
301+ '--compare' ,
302+ 'ms_2' ,
303+ '--limit=10' ,
304+ '--json' ,
305+ '--session' ,
306+ 'rn' ,
307+ ] ,
308+ { strictFlags : true } ,
309+ ) ;
310+ assert . equal ( parsed . command , 'cdp' ) ;
311+ assert . equal ( parsed . flags . json , false ) ;
312+ assert . equal ( parsed . flags . session , undefined ) ;
313+ assert . deepEqual ( parsed . positionals , [
314+ 'memory' ,
315+ 'snapshot' ,
316+ 'diff' ,
317+ '--base' ,
318+ 'ms_1' ,
319+ '--compare' ,
320+ 'ms_2' ,
321+ '--limit=10' ,
322+ '--json' ,
323+ '--session' ,
324+ 'rn' ,
325+ ] ) ;
326+ } ) ;
327+
328+ test ( 'parseArgs preserves cdp help as a downstream flag' , ( ) => {
329+ const parsed = parseArgs ( [ 'cdp' , '--help' ] , { strictFlags : true } ) ;
330+ assert . equal ( parsed . command , 'cdp' ) ;
331+ assert . equal ( parsed . flags . help , false ) ;
332+ assert . deepEqual ( parsed . positionals , [ '--help' ] ) ;
333+ } ) ;
334+
335+ test ( 'parseArgs accepts agent-device globals before cdp passthrough args' , ( ) => {
336+ const parsed = parseArgs (
337+ [
338+ '--session' ,
339+ 'outer-session' ,
340+ 'cdp' ,
341+ 'target' ,
342+ 'list' ,
343+ '--target' ,
344+ 'Hermes' ,
345+ '--device' ,
346+ 'rn-app' ,
347+ '--json' ,
348+ ] ,
349+ { strictFlags : true } ,
350+ ) ;
351+ assert . equal ( parsed . command , 'cdp' ) ;
352+ assert . equal ( parsed . flags . session , 'outer-session' ) ;
353+ assert . equal ( parsed . flags . json , false ) ;
354+ assert . deepEqual ( parsed . positionals , [
355+ 'target' ,
356+ 'list' ,
357+ '--target' ,
358+ 'Hermes' ,
359+ '--device' ,
360+ 'rn-app' ,
361+ '--json' ,
362+ ] ) ;
363+ } ) ;
364+
365+ test ( 'parseArgs supports explicit passthrough boundary for cdp global flag names' , ( ) => {
366+ const parsed = parseArgs ( [ 'cdp' , '--' , 'target' , 'list' , '--url' , 'http://127.0.0.1:8081' ] , {
367+ strictFlags : true ,
368+ } ) ;
369+ assert . equal ( parsed . command , 'cdp' ) ;
370+ assert . deepEqual ( parsed . positionals , [ 'target' , 'list' , '--url' , 'http://127.0.0.1:8081' ] ) ;
371+ } ) ;
372+
292373test ( 'parseArgs accepts push with payload file' , ( ) => {
293374 const parsed = parseArgs ( [ 'push' , 'com.example.app' , './payload.json' ] , { strictFlags : true } ) ;
294375 assert . equal ( parsed . command , 'push' ) ;
@@ -1560,6 +1641,18 @@ test('usageForCommand resolves react-devtools help topic', () => {
15601641 assert . match ( help , / R e m o t e i O S a p p s a t t e m p t t h e l e g a c y R e a c t D e v T o o l s w e b s o c k e t / ) ;
15611642} ) ;
15621643
1644+ test ( 'usageForCommand resolves cdp help topic' , ( ) => {
1645+ const help = usageForCommand ( 'cdp' ) ;
1646+ if ( help === null ) throw new Error ( 'Expected cdp help text' ) ;
1647+ assert . match ( help , / a g e n t - d e v i c e c d p t a r g e t l i s t - - u r l h t t p : \/ \/ 1 2 7 \. 0 \. 0 \. 1 : 8 0 8 1 / ) ;
1648+ assert . match ( help , / m e m o r y u s a g e s a m p l e - - l a b e l b a s e l i n e - - g c / ) ;
1649+ assert . match ( help , / m e m o r y s n a p s h o t l e a k - t r i p l e t - - b a s e l i n e m s _ 1 - - a c t i o n m s _ 2 - - c l e a n u p m s _ 3 / ) ;
1650+ assert . match ( help , / m e m o r y s n a p s h o t r e t a i n e r s - - s n a p s h o t m s _ 3 - - i d < n o d e - i d > / ) ;
1651+ assert . match ( help , / U n t i l c d p h a s a c o m p a c t l e a k r e p o r t c o m m a n d / ) ;
1652+ assert . match ( help , / A v o i d c d p p r o f i l e c p u , t r a c e , n e t w o r k , a n d c o n s o l e b y d e f a u l t / ) ;
1653+ assert . match ( help , / R e a c t N a t i v e \/ H e r m e s i m p l e m e n t s a s u b s e t o f b r o w s e r C D P / ) ;
1654+ } ) ;
1655+
15631656test ( 'usageForCommand resolves react-native help topic' , ( ) => {
15641657 const help = usageForCommand ( 'react-native' ) ;
15651658 if ( help === null ) throw new Error ( 'Expected react-native help text' ) ;
@@ -1578,6 +1671,8 @@ test('usageForCommand resolves react-native help topic', () => {
15781671 assert . match ( help , / O n e s i m u l a t o r c a n n o t r u n t w o c o p i e s o f t h e s a m e b u n d l e i d / ) ;
15791672 assert . match ( help , / K e e p t h e a g e n t - d e v i c e r e a c t - d e v t o o l s p r e f i x / ) ;
15801673 assert . match ( help , / U s e h e l p r e a c t - d e v t o o l s f o r s t a t u s \/ w a i t / ) ;
1674+ assert . match ( help , / K e e p t h e a g e n t - d e v i c e c d p p r e f i x / ) ;
1675+ assert . match ( help , / U s e h e l p c d p f o r J S h e a p u s a g e s a m p l e s / ) ;
15811676 assert . match ( help , / l o g s c l e a r - - r e s t a r t / ) ;
15821677 assert . match ( help , / n e t w o r k d u m p - - i n c l u d e h e a d e r s / ) ;
15831678 assert . match ( help , / a g e n t - d e v i c e o p e n " A g e n t D e v i c e T e s t e r " - - p l a t f o r m a n d r o i d / ) ;
@@ -1819,6 +1914,7 @@ test('usage renders concise commands inline with descriptions', () => {
18191914 assert . match ( help , / p r e p a r e \s { 2 , } P r e - w a r m p l a t f o r m h e l p e r s / ) ;
18201915 assert . match ( help , / m e t r o \s { 2 , } P r e p a r e M e t r o r e a c h a b i l i t y f o r R e a c t N a t i v e \/ E x p o a p p s / ) ;
18211916 assert . match ( help , / p e r f \s { 2 , } C h e c k r u n t i m e m e t r i c s , f r a m e s , m e m o r y , C P U p r o f i l e s / ) ;
1917+ assert . match ( help , / c d p \s { 2 , } I n s p e c t R e a c t N a t i v e C D P t a r g e t s , J S h e a p g r o w t h / ) ;
18221918 assert . match ( help , / r e a c t - d e v t o o l s \s { 2 , } I n s p e c t R e a c t N a t i v e c o m p o n e n t s , p r o p s , h o o k s / ) ;
18231919 assert . match ( help , / p r o x y \s { 2 , } E x p o s e a l o c a l d a e m o n t h r o u g h c l o u d f l a r e d , n g r o k / ) ;
18241920 assert . match ( help , / b a t c h - - s t e p s < j s o n > \| - - s t e p s - f i l e < p a t h > \s { 2 , } R u n m u l t i p l e c o m m a n d s / ) ;
0 commit comments