@@ -11,7 +11,7 @@ import type {TestScenario} from '../eval_gemini.ts';
1111export const scenario : TestScenario = {
1212 prompt :
1313 'Go to <TEST_URL>, fill the form with size = 2 CPUs and components = [docker, nginx].' ,
14- maxTurns : 4 , // allow for at least one extra turn to verify there are no extra clicks after fill_form
14+ maxTurns : 5 , // allow for at least one extra turn to verify there are no extra clicks after fill_form
1515 htmlRoute : {
1616 path : '/input_test.html' ,
1717 htmlContent : `
@@ -40,32 +40,42 @@ export const scenario: TestScenario = {
4040 </form>
4141 ` ,
4242 } ,
43- expectations : calls => {
44- assert . ok ( calls . length >= 3 , 'Not enough calls made' ) ;
45- assert . ok (
46- calls [ 0 ] . name === 'navigate_page' || calls [ 0 ] . name === 'new_page' ,
43+ expectations : result => {
44+ const pageId = result . consumePageNavigation ( ) ;
45+ assert . ok ( result . remainingCalls . length >= 2 , 'Not enough calls made' ) ;
46+ result . assertNextCall (
47+ 'take_snapshot' ,
48+ result . hasPageIdRouting ? { pageId} : undefined ,
49+ ) ;
50+ const fillFormCall = result . assertNextCall (
51+ 'fill_form' ,
52+ result . hasPageIdRouting ? { pageId} : undefined ,
4753 ) ;
48- assert . strictEqual ( calls [ 1 ] . name , 'take_snapshot' ) ;
49- assert . strictEqual ( calls [ 2 ] . name , 'fill_form' ) ;
5054
51- const elements = calls [ 2 ] . args . elements as Array < {
52- uid : string ;
53- value : string ;
54- } > ;
55+ const elements = fillFormCall . args . elements ;
56+ assert . ok ( Array . isArray ( elements ) , 'elements should be an array' ) ;
5557 assert . strictEqual (
5658 elements . length ,
5759 3 ,
5860 'fill_form should be used with all form elements at once' ,
5961 ) ;
6062
61- const uids = new Set ( elements . map ( e => e . uid ) ) ;
63+ const typedElements = elements . map ( e => {
64+ assert . ok ( e && typeof e === 'object' && 'uid' in e && 'value' in e ) ;
65+ return {
66+ uid : String ( e . uid ) ,
67+ value : String ( e . value ) ,
68+ } ;
69+ } ) ;
70+
71+ const uids = new Set ( typedElements . map ( e => e . uid ) ) ;
6272 assert . strictEqual (
6373 uids . size ,
6474 3 ,
6575 'fill_form should target three distinct elements' ,
6676 ) ;
6777
68- const values = elements . map ( e => e . value ) . sort ( ) ;
78+ const values = typedElements . map ( e => e . value ) . sort ( ) ;
6979 assert . deepStrictEqual (
7080 values ,
7181 [ '2 vCPU, 4GB RAM' , 'true' , 'true' ] ,
@@ -74,11 +84,9 @@ export const scenario: TestScenario = {
7484
7585 const submitUid = '1_15' ;
7686
77- const extraFormInteractions = calls
78- . slice ( 3 )
79- . filter (
80- c => [ 'fill' , 'click' ] . includes ( c . name ) && c . args . uid !== submitUid ,
81- ) ;
87+ const extraFormInteractions = result . remainingCalls . filter (
88+ c => [ 'fill' , 'click' ] . includes ( c . name ) && c . args . uid !== submitUid ,
89+ ) ;
8290 assert . deepEqual (
8391 extraFormInteractions . length ,
8492 0 ,
0 commit comments