@@ -26,7 +26,7 @@ export default scenario("API Test")
2626 .step (" Make request" , async (ctx ) => {
2727 const { http } = ctx .resources ;
2828 const res = await http .get (" /health" );
29- expect (res ).ok ();
29+ expect (res ).toBeSuccessful ();
3030 })
3131 .build ();
3232```
@@ -118,16 +118,16 @@ Validate responses with chainable assertions:
118118
119119``` typescript
120120expect (res )
121- .ok () // Status 2xx
122- .status (200 ) // Exact status code
123- .contentType ( / application\/ json/ ) // Content-Type pattern
124- .dataContains ({ name: " Alice" }) // Partial JSON match
125- .durationLessThan (1000 ); // Response time limit
121+ .toBeSuccessful () // Status 2xx
122+ .toHaveStatus (200 ) // Exact status code
123+ .toHaveHeader ( " content-type " , / application\/ json/ ) // Content-Type pattern
124+ .toHaveContentContaining ({ name: " Alice" }) // Partial JSON match
125+ .toHaveDurationLessThan (1000 ); // Response time limit
126126
127127// Additional assertions
128- expect (res ).notOk (); // Status not 2xx
129- expect (res ).headerExists (" X-Request-Id" );
130- expect (res ).textContains ( " success" );
128+ expect (res ).not . toBeSuccessful (); // Status not 2xx
129+ expect (res ).toHaveHeader (" X-Request-Id" );
130+ expect (res ).toHaveText ( / success/ );
131131```
132132
133133## SQL Clients
@@ -201,12 +201,12 @@ Validate query results:
201201
202202``` typescript
203203expect (result )
204- .ok ()
205- .count (1 )
206- .dataContains ({ name: " Alice" });
204+ .toBeSuccessful ()
205+ .toHaveRowCount (1 )
206+ .toHaveContentContaining ({ name: " Alice" });
207207
208208// Match multiple rows
209- expect (result ).dataEquals ([
209+ expect (result ).toHaveContent ([
210210 { id: 1 , name: " Alice" },
211211 { id: 2 , name: " Bob" },
212212]);
@@ -235,7 +235,7 @@ const res = await grpc.call("echo.EchoService", "Echo", {
235235 message: " Hello" ,
236236});
237237
238- expect (res ).ok ().dataContains ({ message: " Hello" });
238+ expect (res ).toBeSuccessful ().toHaveContentContaining ({ message: " Hello" });
239239const data = res .data ();
240240```
241241
@@ -250,7 +250,7 @@ for await (
250250 count: 3 ,
251251 })
252252) {
253- expect (res ).ok ();
253+ expect (res ).toBeSuccessful ();
254254 messages .push (res .data ());
255255}
256256```
@@ -269,7 +269,7 @@ const res = await grpc.clientStream(
269269 yield { message: " Third" };
270270 },
271271);
272- expect (res ).ok ();
272+ expect (res ).toBeSuccessful ();
273273```
274274
275275### Bidirectional Streaming
@@ -287,7 +287,7 @@ for await (
287287 },
288288 )
289289) {
290- expect (res ).ok ();
290+ expect (res ).toBeSuccessful ();
291291 console .log (" Received:" , res .data ());
292292}
293293```
@@ -310,7 +310,7 @@ const res = await connect.call("echo.EchoService", "Echo", {
310310 message: " Hello" ,
311311});
312312
313- expect (res ).ok ().dataContains ({ message: " Hello" });
313+ expect (res ).toBeSuccessful ().toHaveContentContaining ({ message: " Hello" });
314314```
315315
316316### Server Streaming
@@ -321,7 +321,7 @@ for await (
321321 count: 3 ,
322322 })
323323) {
324- expect (res ).ok ();
324+ expect (res ).toBeSuccessful ();
325325 console .log (" Received:" , res .data ());
326326}
327327```
@@ -360,7 +360,9 @@ const res = await graphql.query(
360360 { id: " 1" },
361361);
362362
363- expect (res ).ok ().dataContains ({ user: { name: " Alice" } });
363+ expect (res ).toBeSuccessful ().toHaveContentContaining ({
364+ user: { name: " Alice" },
365+ });
364366const user = res .data ().user ;
365367```
366368
@@ -381,7 +383,7 @@ const res = await graphql.mutate(
381383 { input: { name: " Alice" , email: " alice@example.com" } },
382384);
383385
384- expect (res ).ok ();
386+ expect (res ).toBeSuccessful ();
385387const newUser = res .data ().createUser ;
386388```
387389
@@ -400,7 +402,7 @@ const subscription = graphql.subscribe(outdent`
400402` );
401403
402404for await (const res of subscription ) {
403- expect (res ).ok ();
405+ expect (res ).toBeSuccessful ();
404406 console .log (" New user:" , res .data ().userCreated );
405407}
406408```
@@ -426,7 +428,7 @@ Common Redis operations:
426428await redis .set (" key" , " value" );
427429await redis .set (" key" , " value" , { ex: 3600 }); // With TTL
428430const result = await redis .get (" key" );
429- expect (result ).ok ().value (" value" );
431+ expect (result ).toBeSuccessful ().toHaveContent (" value" );
430432
431433// Hashes
432434await redis .hset (" user:1" , { name: " Alice" , age: " 30" });
@@ -469,11 +471,11 @@ const result = await users.insertOne({
469471 name: " Alice" ,
470472 email: " alice@example.com" ,
471473});
472- expect (result ).ok ();
474+ expect (result ).toBeSuccessful ();
473475
474476// Find
475477const user = await users .findOne ({ _id: result .insertedId });
476- expect (user ).ok ().documentContains ({ name: " Alice" });
478+ expect (user ).toBeSuccessful ().toHaveContentContaining ({ name: " Alice" });
477479
478480// Find many
479481const allUsers = await users .find ({ age: { $gte: 18 } }).toArray ();
@@ -504,7 +506,7 @@ By default, an in-memory database is used for testing.
504506// Set and get
505507await kv .set ([" users" , " 1" ], { name: " Alice" });
506508const result = await kv .get ([" users" , " 1" ]);
507- expect (result ).ok ().value ({ name: " Alice" });
509+ expect (result ).toBeSuccessful ().toHaveContent ({ name: " Alice" });
508510
509511// List by prefix
510512const users = await kv .list ({ prefix: [" users" ] });
@@ -549,7 +551,7 @@ await channel.sendToQueue("my-queue", content);
549551
550552// Receive message
551553const result = await channel .get (" my-queue" );
552- expect (result ).ok ().hasContent ();
554+ expect (result ).toBeSuccessful ().toHaveContent ();
553555if (result .message ) {
554556 await channel .ack (result .message );
555557}
@@ -582,7 +584,7 @@ await sqs.ensureQueue("my-queue");
582584
583585// Send message
584586const result = await sqs .send (JSON .stringify ({ event: " user.created" }));
585- expect (result ).ok ().hasMessageId ();
587+ expect (result ).toBeSuccessful ().toHaveMessageId ();
586588
587589// Receive and process
588590const messages = await sqs .receive ({ maxMessages: 10 });
@@ -650,11 +652,11 @@ Use assertions for expected successes, explicit checks for expected failures:
650652``` typescript
651653// Expected success - use assertions
652654const res = await http .get (" /users/1" );
653- expect (res ).ok ().status (200 );
655+ expect (res ).toBeSuccessful ().toHaveStatus (200 );
654656
655657// Expected failure - disable throwing, check manually
656658const res = await http .get (" /users/nonexistent" , { throwOnError: false });
657- expect (res ).status (404 );
659+ expect (res ).toHaveStatus (404 );
658660```
659661
660662### Configure Retries
@@ -668,7 +670,7 @@ Use retry configuration for network-dependent operations. See
668670 const res = await http .get (" /external-api" , {
669671 retry: { maxAttempts: 3 , backoff: " exponential" },
670672 });
671- expect (res ).ok ();
673+ expect (res ).toBeSuccessful ();
672674}, {
673675 timeout: 10000 , // Allow time for retries
674676})
0 commit comments