Code view:

A painting is a person's account of this edit as text, recorded independently of the node mapping - a rendering often has several equally defensible answers where the mapping has one. Deletions and insertions carry no position on the opposite side in a painting, so that panel draws no caret for them.

Before

…lines 1–291 unchanged (291 lines)
292 await page.goto(server.PREFIX + '/page.html');
293 const error = await agent.expect('page URL matches /other pattern').catch(e => e);
294 expect(stripAnsi(error.message)).toContain(`pageAgent.expect: expect(page).toHaveURL(expected) failed`);
295 expect(stripAnsi(error.message)).toContain(`Received: ${server.PREFIX}/page.html`);
296 }
297});
298

After

…lines 1–292 unchanged (292 lines)
293 const error = await agent.expect('page URL matches /other pattern').catch(e => e);
294 expect(stripAnsi(error.message)).toContain(`pageAgent.expect: expect(page).toHaveURL(expected) failed`);
295 expect(stripAnsi(error.message)).toContain(`Received: ${server.PREFIX}/page.html`);
296 }
297});
298
299test('expectTitle success', async ({ context }) => {
300 {
301 const { page, agent } = await generateAgent(context);
302 await page.setContent(`<title>My Page Title</title>`);
303 await agent.expect('page title is "My Page Title"');
304 }
305 expect(await cacheObject()).toEqual({
306 'page title is "My Page Title"': {
307 actions: [expect.objectContaining({ method: 'expectTitle' })],
308 },
309 });
310 {
311 const { page, agent } = await runAgent(context);
312 await page.setContent(`<title>My Page Title</title>`);
313 await agent.expect('page title is "My Page Title"');
314 }
315});
316
317test('expectTitle wrong title error', async ({ context }) => {
318 {
319 const { page, agent } = await generateAgent(context);
320 await page.setContent(`<title>Other Title</title>`);
321 await agent.expect('page title is "Other Title"');
322 }
323 expect(await cacheObject()).toEqual({
324 'page title is "Other Title"': {
325 actions: [expect.objectContaining({ method: 'expectTitle' })],
326 },
327 });
328 {
329 const { page, agent } = await runAgent(context);
330 await page.setContent(`<title>My Page Title</title>`);
331 const error = await agent.expect('page title is "Other Title"').catch(e => e);
332 expect(stripAnsi(error.message)).toContain(`pageAgent.expect: expect(page).toHaveTitle(expected) failed`);
333 expect(stripAnsi(error.message)).toContain(`Received: My Page Title`);
334 }
335});
336

Before

program
comment "/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed u"...
import_statement
import "import"
import_clause
named_imports
{ "{"
import_specifier
identifier "stripAnsi"
} "}"
from "from"
string
' "'"
string_fragment "../config/utils"
' "'"
; ";"
import_statement
import "import"
import_clause
named_imports
{ "{"
import_specifier
identifier "browserTest"
as "as"
identifier "test"
, ","
import_specifier
identifier "expect"
} "}"
from "from"
string
' "'"
string_fragment "../config/browserTest"
' "'"
; ";"
import_statement (+23 nodes collapsed)
comment "// LOWIRE_NO_CACHE=1 to generate api caches"
comment "// LOWIRE_FORCE_CACHE=1 to force api caches"
expression_statement (+174 nodes collapsed)
expression_statement (+174 nodes collapsed)
expression_statement (+179 nodes collapsed)
expression_statement (+190 nodes collapsed)
expression_statement (+190 nodes collapsed)
expression_statement (+217 nodes collapsed)
expression_statement (+243 nodes collapsed)
expression_statement (+160 nodes collapsed)
expression_statement (+207 nodes collapsed)
expression_statement (+284 nodes collapsed)
expression_statement (+207 nodes collapsed)
expression_statement (+284 nodes collapsed)

After

program
comment "/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed u"...
import_statement
import "import"
import_clause
named_imports
{ "{"
import_specifier
identifier "stripAnsi"
} "}"
from "from"
string
' "'"
string_fragment "../config/utils"
' "'"
; ";"
import_statement
import "import"
import_clause
named_imports
{ "{"
import_specifier
identifier "browserTest"
as "as"
identifier "test"
, ","
import_specifier
identifier "expect"
} "}"
from "from"
string
' "'"
string_fragment "../config/browserTest"
' "'"
; ";"
import_statement (+23 nodes collapsed)
comment "// LOWIRE_NO_CACHE=1 to generate api caches"
comment "// LOWIRE_FORCE_CACHE=1 to force api caches"
expression_statement (+174 nodes collapsed)
expression_statement (+174 nodes collapsed)
expression_statement (+179 nodes collapsed)
expression_statement (+190 nodes collapsed)
expression_statement (+190 nodes collapsed)
expression_statement (+217 nodes collapsed)
expression_statement (+243 nodes collapsed)
expression_statement (+160 nodes collapsed)
expression_statement (+207 nodes collapsed)
expression_statement (+284 nodes collapsed)
expression_statement (+207 nodes collapsed)
expression_statement (+284 nodes collapsed)
expression_statement
call_expression
identifier "test"
arguments
( "("
string
' "'"
string_fragment "expectTitle success"
' "'"
, ","
arrow_function
async "async"
formal_parameters
( "("
required_parameter
object_pattern
{ "{"
shorthand_property_identifier_pattern "context"
} "}"
) ")"
=> "=>"
statement_block
{ "{"
statement_block
{ "{"
lexical_declaration
const "const"
variable_declarator
object_pattern
{ "{"
shorthand_property_identifier_pattern "page"
, ","
shorthand_property_identifier_pattern "agent"
} "}"
= "="
await_expression
await "await"
call_expression
identifier "generateAgent"
arguments
( "("
identifier "context"
) ")"
; ";"
expression_statement
await_expression
await "await"
call_expression
member_expression
identifier "page"
. "."
property_identifier "setContent"
arguments
( "("
template_string
` "`"
string_fragment "<title>My Page Title</title>"
` "`"
) ")"
; ";"
expression_statement
await_expression
await "await"
call_expression
member_expression
identifier "agent"
. "."
property_identifier "expect"
arguments
( "("
string
' "'"
string_fragment "page title is \"My Page Title\""
' "'"
) ")"
; ";"
} "}"
expression_statement
call_expression
member_expression
call_expression
identifier "expect"
arguments
( "("
await_expression
await "await"
call_expression
identifier "cacheObject"
arguments
( "("
) ")"
) ")"
. "."
property_identifier "toEqual"
arguments
( "("
object
{ "{"
pair
string
' "'"
string_fragment "page title is \"My Page Title\""
' "'"
: ":"
object
{ "{"
pair
property_identifier "actions"
: ":"
array
[ "["
call_expression
member_expression
identifier "expect"
. "."
property_identifier "objectContaining"
arguments
( "("
object
{ "{"
pair
property_identifier "method"
: ":"
string
' "'"
string_fragment "expectTitle"
' "'"
} "}"
) ")"
] "]"
, ","
} "}"
, ","
} "}"
) ")"
; ";"
statement_block
{ "{"
lexical_declaration
const "const"
variable_declarator
object_pattern
{ "{"
shorthand_property_identifier_pattern "page"
, ","
shorthand_property_identifier_pattern "agent"
} "}"
= "="
await_expression
await "await"
call_expression
identifier "runAgent"
arguments
( "("
identifier "context"
) ")"
; ";"
expression_statement
await_expression
await "await"
call_expression
member_expression
identifier "page"
. "."
property_identifier "setContent"
arguments
( "("
template_string
` "`"
string_fragment "<title>My Page Title</title>"
` "`"
) ")"
; ";"
expression_statement
await_expression
await "await"
call_expression
member_expression
identifier "agent"
. "."
property_identifier "expect"
arguments
( "("
string
' "'"
string_fragment "page title is \"My Page Title\""
' "'"
) ")"
; ";"
} "}"
} "}"
) ")"
; ";"
expression_statement
call_expression
identifier "test"
arguments
( "("
string
' "'"
string_fragment "expectTitle wrong title error"
' "'"
, ","
arrow_function
async "async"
formal_parameters
( "("
required_parameter
object_pattern
{ "{"
shorthand_property_identifier_pattern "context"
} "}"
) ")"
=> "=>"
statement_block
{ "{"
statement_block
{ "{"
lexical_declaration
const "const"
variable_declarator
object_pattern
{ "{"
shorthand_property_identifier_pattern "page"
, ","
shorthand_property_identifier_pattern "agent"
} "}"
= "="
await_expression
await "await"
call_expression
identifier "generateAgent"
arguments
( "("
identifier "context"
) ")"
; ";"
expression_statement
await_expression
await "await"
call_expression
member_expression
identifier "page"
. "."
property_identifier "setContent"
arguments
( "("
template_string
` "`"
string_fragment "<title>Other Title</title>"
` "`"
) ")"
; ";"
expression_statement
await_expression
await "await"
call_expression
member_expression
identifier "agent"
. "."
property_identifier "expect"
arguments
( "("
string
' "'"
string_fragment "page title is \"Other Title\""
' "'"
) ")"
; ";"
} "}"
expression_statement
call_expression
member_expression
call_expression
identifier "expect"
arguments
( "("
await_expression
await "await"
call_expression
identifier "cacheObject"
arguments
( "("
) ")"
) ")"
. "."
property_identifier "toEqual"
arguments
( "("
object
{ "{"
pair
string
' "'"
string_fragment "page title is \"Other Title\""
' "'"
: ":"
object
{ "{"
pair
property_identifier "actions"
: ":"
array
[ "["
call_expression
member_expression
identifier "expect"
. "."
property_identifier "objectContaining"
arguments
( "("
object
{ "{"
pair
property_identifier "method"
: ":"
string
' "'"
string_fragment "expectTitle"
' "'"
} "}"
) ")"
] "]"
, ","
} "}"
, ","
} "}"
) ")"
; ";"
statement_block
{ "{"
lexical_declaration
const "const"
variable_declarator
object_pattern
{ "{"
shorthand_property_identifier_pattern "page"
, ","
shorthand_property_identifier_pattern "agent"
} "}"
= "="
await_expression
await "await"
call_expression
identifier "runAgent"
arguments
( "("
identifier "context"
) ")"
; ";"
expression_statement
await_expression
await "await"
call_expression
member_expression
identifier "page"
. "."
property_identifier "setContent"
arguments
( "("
template_string
` "`"
string_fragment "<title>My Page Title</title>"
` "`"
) ")"
; ";"
lexical_declaration
const "const"
variable_declarator
identifier "error"
= "="
await_expression
await "await"
call_expression
member_expression
call_expression
member_expression
identifier "agent"
. "."
property_identifier "expect"
arguments
( "("
string
' "'"
string_fragment "page title is \"Other Title\""
' "'"
) ")"
. "."
property_identifier "catch"
arguments
( "("
arrow_function
identifier "e"
=> "=>"
identifier "e"
) ")"
; ";"
expression_statement
call_expression
member_expression
call_expression
identifier "expect"
arguments
( "("
call_expression
identifier "stripAnsi"
arguments
( "("
member_expression
identifier "error"
. "."
property_identifier "message"
) ")"
) ")"
. "."
property_identifier "toContain"
arguments
( "("
template_string
` "`"
string_fragment "pageAgent.expect: expect(page).toHaveTitle(expected) failed"
` "`"
) ")"
; ";"
expression_statement
call_expression
member_expression
call_expression
identifier "expect"
arguments
( "("
call_expression
identifier "stripAnsi"
arguments
( "("
member_expression
identifier "error"
. "."
property_identifier "message"
) ")"
) ")"
. "."
property_identifier "toContain"
arguments
( "("
template_string
` "`"
string_fragment "Received: My Page Title"
` "`"
) ")"
; ";"
} "}"
} "}"
) ")"
; ";"