@@ -11,77 +11,56 @@ await Assert.That(await cdp.WaitForExpressionAsync(SiteBrowserSceneTokens.GraphR
1111 var state = await ReadMarkAsync ( cdp , cancellationToken ) ;
1212 await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . CountField ) . GetInt32 ( ) ) . IsEqualTo ( SiteTokens . One ) ;
1313 await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . LoadedField ) . GetBoolean ( ) ) . IsTrue ( ) ;
14- await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . SourceField ) . GetString ( ) ) . IsEqualTo ( SiteVectorAssetTokens . ExpectedFaviconPath ) ;
15- await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . DisplayField ) . GetString ( ) ) . IsNotEqualTo ( SiteVectorAssetTokens . CssNone ) ;
16- await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . VisibilityField ) . GetString ( ) ) . IsNotEqualTo ( SiteVectorAssetTokens . HiddenVisibility ) ;
17- await Assert . That ( CssNumber ( state . GetProperty ( SiteVectorAssetTokens . OpacityField ) . GetString ( ) ) )
18- . IsGreaterThan ( SiteVectorAssetTokens . PositiveSize ) ;
19- await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . PosterVisibilityField ) . GetString ( ) ) . IsEqualTo ( SiteVectorAssetTokens . HiddenVisibility ) ;
14+ await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . MarkCountField ) . GetInt32 ( ) ) . IsEqualTo ( SiteTokens . Zero ) ;
15+ await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . PosterVisibilityField ) . GetString ( ) )
16+ . IsEqualTo ( SiteVectorAssetTokens . HiddenVisibility ) ;
17+ await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . TransformField ) . GetString ( ) is { Length : > 0 } ) . IsTrue ( ) ;
2018 await AssertClusterGraphAsync ( cdp , cancellationToken ) ;
21- await AssertProjectedDimensions ( state ) ;
22- var transform = state . GetProperty ( SiteVectorAssetTokens . TransformField ) . GetString ( ) ?? string . Empty ;
23- await Assert . That ( transform . StartsWith ( SiteVectorAssetTokens . Matrix3dPrefix , StringComparison . Ordinal ) ) . IsTrue ( ) ;
24- await Assert . That ( transform . EndsWith ( SiteVectorAssetTokens . MatrixClosingCharacter ) ) . IsTrue ( ) ;
19+ await AssertCanvasDimensionsAsync ( state ) ;
2520 }
2621
2722 private static async Task AssertClusterGraphAsync ( SiteBrowserCdpClient cdp , CancellationToken token )
2823 {
2924 var graph = await cdp . EvaluateAsync ( SiteBrowserSceneTokens . ClusterGraphScript , false , token ) ;
30- await Assert . That ( graph . GetProperty ( SiteBrowserSceneTokens . SilosField ) . GetInt32 ( ) ) . IsEqualTo ( 3 ) ;
31- await Assert . That ( graph . GetProperty ( SiteBrowserSceneTokens . GrainsField ) . GetInt32 ( ) ) . IsEqualTo ( 18 ) ;
32- await Assert . That ( graph . GetProperty ( SiteBrowserSceneTokens . LinksField ) . GetInt32 ( ) ) . IsEqualTo ( 33 ) ;
33- await Assert . That ( graph . GetProperty ( SiteBrowserSceneTokens . ClientsField ) . GetInt32 ( ) ) . IsEqualTo ( 3 ) ;
34- await AssertGraphLabelsAsync ( graph . GetProperty ( SiteBrowserSceneTokens . ModelLabelsField ) ,
35- SiteBrowserSceneTokens . ModelNames ) ;
36- await AssertGraphLabelsAsync ( graph . GetProperty ( SiteBrowserSceneTokens . ClientLabelsField ) ,
37- SiteBrowserSceneTokens . ClientNames ) ;
38- var description = graph . GetProperty ( SiteBrowserSceneTokens . DescriptionField ) . GetString ( ) ! ;
39- await Assert . That ( description . Contains ( "Orleans" , StringComparison . OrdinalIgnoreCase ) ) . IsTrue ( ) ;
40- await Assert . That ( description . Contains ( "conceptual" , StringComparison . OrdinalIgnoreCase ) ) . IsTrue ( ) ;
41- var labels = graph . GetProperty ( SiteBrowserSceneTokens . LabelsField ) . EnumerateArray ( ) . ToArray ( ) ;
42- await Assert . That ( labels . Length ) . IsEqualTo ( 3 ) ;
43- for ( var index = 0 ; index < labels . Length ; index ++ )
44- {
45- var label = labels [ index ] ;
46- var text = label . GetProperty ( SiteBrowserSceneTokens . TextField ) . GetString ( ) ! ;
47- var name = SiteBrowserSceneTokens . SiloNames [ index ] ;
48- await Assert . That ( text . Contains ( "Silo " + name , StringComparison . Ordinal ) ) . IsTrue ( ) ;
49- await Assert . That ( text . Contains ( "Node " + name , StringComparison . Ordinal ) ) . IsTrue ( ) ;
50- await Assert . That ( text . Contains ( "Grain activations" , StringComparison . Ordinal ) ) . IsTrue ( ) ;
51- await Assert . That ( text . Contains ( "Node-local storage" , StringComparison . Ordinal ) ) . IsTrue ( ) ;
52- await Assert . That ( label . GetProperty ( SiteBrowserSceneTokens . VisibleField ) . GetBoolean ( ) ) . IsTrue ( ) ;
53- await Assert . That ( label . GetProperty ( SiteBrowserSceneTokens . ContainedField ) . GetBoolean ( ) ) . IsTrue ( ) ;
54- }
55- }
56-
57- private static async Task AssertGraphLabelsAsync ( JsonElement labels , string [ ] expectedNames )
58- {
59- var entries = labels . EnumerateArray ( ) . ToArray ( ) ;
60- await Assert . That ( entries . Length ) . IsEqualTo ( expectedNames . Length ) ;
61- foreach ( var expected in expectedNames )
25+ await Assert . That ( graph . GetProperty ( SiteBrowserSceneTokens . ModelsField ) . GetInt32 ( ) ) . IsEqualTo ( SiteBrowserSceneTokens . ModelCount ) ;
26+ await Assert . That ( graph . GetProperty ( SiteBrowserSceneTokens . AgentsField ) . GetInt32 ( ) ) . IsEqualTo ( SiteBrowserSceneTokens . AgentCount ) ;
27+ await Assert . That ( graph . GetProperty ( SiteBrowserSceneTokens . LinksField ) . GetInt32 ( ) ) . IsEqualTo ( SiteBrowserSceneTokens . LinkCount ) ;
28+ await Assert . That ( graph . GetProperty ( SiteBrowserSceneTokens . ClientsField ) . GetInt32 ( ) ) . IsEqualTo ( SiteTokens . Zero ) ;
29+ await Assert . That ( graph . GetProperty ( SiteBrowserSceneTokens . MarksField ) . GetInt32 ( ) ) . IsEqualTo ( SiteTokens . Zero ) ;
30+ await Assert . That ( graph . GetProperty ( SiteBrowserSceneTokens . CaptionsField ) . GetInt32 ( ) ) . IsEqualTo ( SiteTokens . Zero ) ;
31+ var entries = graph . GetProperty ( SiteBrowserSceneTokens . ModelLabelsField ) . EnumerateArray ( ) . ToArray ( ) ;
32+ await Assert . That ( entries . Length ) . IsEqualTo ( SiteBrowserSceneTokens . ModelNames . Length ) ;
33+ foreach ( var expected in SiteBrowserSceneTokens . ModelNames )
6234 {
6335 await Assert . That ( entries . Count ( label => string . Equals ( label . GetProperty ( SiteBrowserSceneTokens . TextField ) . GetString ( ) ,
6436 expected , StringComparison . Ordinal ) ) ) . IsEqualTo ( SiteTokens . One ) ;
6537 }
66-
6738 foreach ( var label in entries )
6839 {
69- await Assert . That ( label . GetProperty ( SiteBrowserSceneTokens . VisibleField ) . GetBoolean ( ) ) . IsTrue ( ) ;
70- await Assert . That ( label . GetProperty ( SiteBrowserSceneTokens . ContainedField ) . GetBoolean ( ) ) . IsTrue ( ) ;
40+ await Assert . That ( label . GetProperty ( SiteBrowserSceneTokens . AccessibleField ) . GetBoolean ( ) ) . IsTrue ( ) ;
7141 }
42+ await AssertDescriptionAsync ( graph ) ;
43+ }
44+
45+ private static async Task AssertDescriptionAsync ( JsonElement state )
46+ {
47+ var description = state . GetProperty ( SiteBrowserSceneTokens . DescriptionField ) . GetString ( ) ! ;
48+ await Assert . That ( description . Contains ( SiteVectorAssetTokens . AgentDescription , StringComparison . OrdinalIgnoreCase ) ) . IsTrue ( ) ;
49+ await Assert . That ( description . Contains ( SiteVectorAssetTokens . DatabaseDescription , StringComparison . OrdinalIgnoreCase ) ) . IsTrue ( ) ;
50+ await Assert . That ( description . Contains ( SiteVectorAssetTokens . ConceptualDescription , StringComparison . OrdinalIgnoreCase ) ) . IsTrue ( ) ;
7251 }
7352
7453 public static async Task AssertPosterFallbackAsync ( SiteBrowserCdpClient cdp ,
7554 CancellationToken cancellationToken )
7655 {
7756 var state = await cdp . EvaluateAsync ( SiteVectorAssetTokens . PosterStateScript , false , cancellationToken ) ;
7857 await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . PosterVisibleField ) . GetBoolean ( ) ) . IsTrue ( ) ;
79- await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . MarkVisibleField ) . GetBoolean ( ) ) . IsFalse ( ) ;
80- await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . MarkCountField ) . GetInt32 ( ) ) . IsEqualTo ( SiteTokens . One ) ;
58+ await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . LoadedField ) . GetBoolean ( ) ) . IsTrue ( ) ;
59+ await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . SourceField ) . GetString ( ) !
60+ . EndsWith ( SiteContentTokens . DesktopPosterSuffix , StringComparison . Ordinal ) ) . IsTrue ( ) ;
61+ await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . MarkCountField ) . GetInt32 ( ) ) . IsEqualTo ( SiteTokens . Zero ) ;
8162 await Assert . That ( state . GetProperty ( SiteBrowserSceneTokens . LabelsHiddenField ) . GetBoolean ( ) ) . IsTrue ( ) ;
82- var description = state . GetProperty ( SiteBrowserSceneTokens . DescriptionField ) . GetString ( ) ! ;
83- await Assert . That ( description . Contains ( "Orleans" , StringComparison . OrdinalIgnoreCase ) ) . IsTrue ( ) ;
84- await Assert . That ( description . Contains ( "conceptual" , StringComparison . OrdinalIgnoreCase ) ) . IsTrue ( ) ;
63+ await AssertDescriptionAsync ( state ) ;
8564 }
8665
8766 public static async Task < JsonElement > ReadMarkAsync ( SiteBrowserCdpClient cdp ,
@@ -99,7 +78,7 @@ await Assert.That(current.GetProperty(SiteVectorAssetTokens.TransformField).GetS
9978
10079 public static async Task AssertRetinaResizeAsync ( SiteBrowserCdpClient cdp , CancellationToken cancellationToken )
10180 {
102- var originalMark = await ReadMarkAsync ( cdp , cancellationToken ) ;
81+ var previous = await ReadMarkAsync ( cdp , cancellationToken ) ;
10382 foreach ( var width in SiteBrowserUiTokens . ViewportWidths )
10483 {
10584 await cdp . CommandAsync ( SiteBrowserTokens . SetDeviceMetrics , new Dictionary < string , object ? >
@@ -112,41 +91,26 @@ public static async Task AssertRetinaResizeAsync(SiteBrowserCdpClient cdp, Cance
11291 await cdp . EvaluateAsync ( SiteBrowserUiTokens . SceneScrollScript , false , cancellationToken ) ;
11392 await Assert . That ( await cdp . WaitForExpressionAsync ( SiteVectorAssetTokens . ReadyPredicate , cancellationToken ) ) . IsTrue ( ) ;
11493 await Task . Delay ( TimeSpan . FromMilliseconds ( SiteBrowserUiTokens . SceneSettleWaitMilliseconds ) , TimeProvider . System , cancellationToken ) ;
115- await AssertPoseUpdatedAsync ( cdp , originalMark , cancellationToken ) ;
116- originalMark = await ReadMarkAsync ( cdp , cancellationToken ) ;
94+ await AssertReadyMarkAsync ( cdp , cancellationToken ) ;
95+ var current = await ReadMarkAsync ( cdp , cancellationToken ) ;
96+ await Assert . That ( current . GetProperty ( SiteVectorAssetTokens . WidthField ) . GetDouble ( ) )
97+ . IsNotEqualTo ( previous . GetProperty ( SiteVectorAssetTokens . WidthField ) . GetDouble ( ) ) ;
98+ previous = current ;
11799 }
118100 }
119101
120- private static async Task AssertProjectedDimensions ( JsonElement state )
121- {
122- var width = CssPixels ( state . GetProperty ( SiteVectorAssetTokens . WidthField ) . GetString ( ) ) ;
123- var height = CssPixels ( state . GetProperty ( SiteVectorAssetTokens . HeightField ) . GetString ( ) ) ;
124- await Assert . That ( width > SiteVectorAssetTokens . PositiveSize && height > SiteVectorAssetTokens . PositiveSize ) . IsTrue ( ) ;
125- await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . OffsetWidthField ) . GetDouble ( ) ) . IsEqualTo ( width ) . Within ( SiteVectorAssetTokens . CssDimensionTolerance ) ;
126- await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . OffsetHeightField ) . GetDouble ( ) ) . IsEqualTo ( height ) . Within ( SiteVectorAssetTokens . CssDimensionTolerance ) ;
127- await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . RectWidthField ) . GetDouble ( ) > SiteVectorAssetTokens . PositiveSize ) . IsTrue ( ) ;
128- await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . RectHeightField ) . GetDouble ( ) > SiteVectorAssetTokens . PositiveSize ) . IsTrue ( ) ;
129- await AssertContainedRasterSize ( state , width , height ) ;
130- }
131-
132- private static async Task AssertContainedRasterSize ( JsonElement state , double width , double height )
102+ private static async Task AssertCanvasDimensionsAsync ( JsonElement state )
133103 {
134- var dimensions = state . GetProperty ( SiteVectorAssetTokens . BoundsField ) ;
135- await Assert . That ( dimensions . GetProperty ( SiteVectorAssetTokens . ContainedField ) . GetBoolean ( ) ) . IsTrue ( ) ;
136- await Assert . That ( dimensions . GetProperty ( SiteVectorAssetTokens . CenteredField ) . GetBoolean ( ) ) . IsTrue ( ) ;
137- await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . RectWidthField ) . GetDouble ( ) / width )
138- . IsBetween ( SiteVectorAssetTokens . MinimumProjectionRatio , SiteVectorAssetTokens . MaximumProjectionRatio ) ;
139- await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . RectHeightField ) . GetDouble ( ) / height )
140- . IsBetween ( SiteVectorAssetTokens . MinimumProjectionRatio , SiteVectorAssetTokens . MaximumProjectionRatio ) ;
104+ await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . WidthField ) . GetDouble ( ) ) . IsGreaterThan ( SiteTokens . Zero ) ;
105+ await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . HeightField ) . GetDouble ( ) ) . IsGreaterThan ( SiteTokens . Zero ) ;
106+ await Assert . That ( state . GetProperty ( SiteVectorAssetTokens . ContainedField ) . GetBoolean ( ) ) . IsTrue ( ) ;
107+ await Assert . That ( state . GetProperty ( SiteBrowserUiTokens . BufferPixelsField ) . GetInt32 ( ) )
108+ . IsBetween ( SiteTokens . One , SiteBrowserUiTokens . RendererPixelLimit ) ;
109+ await Assert . That ( state . GetProperty ( SiteBrowserUiTokens . PixelRatioField ) . GetDouble ( ) )
110+ . IsLessThanOrEqualTo ( SiteBrowserUiTokens . RendererPixelRatioLimit ) ;
111+ await Assert . That ( state . GetProperty ( SiteBrowserUiTokens . TrianglesField ) . GetInt32 ( ) )
112+ . IsBetween ( SiteTokens . One , SiteBrowserUiTokens . RendererTriangleLimit ) ;
113+ await Assert . That ( state . GetProperty ( SiteBrowserUiTokens . DrawCallsField ) . GetInt32 ( ) )
114+ . IsBetween ( SiteTokens . One , SiteBrowserUiTokens . RendererDrawCallLimit ) ;
141115 }
142-
143- private static double CssPixels ( string ? value ) => value is not null &&
144- value . EndsWith ( SiteVectorAssetTokens . CssPixelSuffix , StringComparison . Ordinal ) &&
145- double . TryParse ( value [ ..^ SiteVectorAssetTokens . CssPixelSuffix . Length ] ,
146- System . Globalization . NumberStyles . Float , System . Globalization . CultureInfo . InvariantCulture , out var pixels )
147- ? pixels : SiteTokens . Zero ;
148-
149- private static double CssNumber ( string ? value ) => double . TryParse ( value ,
150- System . Globalization . NumberStyles . Float , System . Globalization . CultureInfo . InvariantCulture , out var number )
151- ? number : SiteTokens . Zero ;
152116}
0 commit comments