diff --git a/installation-tests/failing.spec.js b/installation-tests/failing.spec.js
new file mode 100644
index 0000000000..a2d60d0787
--- /dev/null
+++ b/installation-tests/failing.spec.js
@@ -0,0 +1,6 @@
+const { test, expect } = require('@playwright/test');
+
+test('failing test', async ({ page }) => {
+ await page.setContent(`
hello
world`);
+ await expect(page.locator('span')).toHaveText('hello', { timeout: 1000 });
+});
diff --git a/installation-tests/installation-tests.sh b/installation-tests/installation-tests.sh
index 4b78391fb9..08ab248437 100755
--- a/installation-tests/installation-tests.sh
+++ b/installation-tests/installation-tests.sh
@@ -52,6 +52,7 @@ function copy_test_scripts {
cp "${SCRIPTS_PATH}/electron-app.js" .
cp "${SCRIPTS_PATH}/driver-client.js" .
cp "${SCRIPTS_PATH}/sample.spec.js" .
+ cp "${SCRIPTS_PATH}/failing.spec.js" .
cp "${SCRIPTS_PATH}/read-json-report.js" .
cp "${SCRIPTS_PATH}/playwright-test-types.ts" .
}
@@ -80,6 +81,7 @@ function run_tests {
test_playwright_chromium_should_work
test_playwright_webkit_should_work
test_playwright_firefox_should_work
+ test_playwright_test_stacks_should_work
}
function test_screencast {
@@ -606,7 +608,7 @@ function test_playwright_test_should_work {
PLAYWRIGHT_BROWSERS_PATH="0" npx playwright install
echo "Running playwright test"
- PLAYWRIGHT_JSON_OUTPUT_NAME=report.json PLAYWRIGHT_BROWSERS_PATH="0" npx playwright test -c . --browser=all --reporter=list,json
+ PLAYWRIGHT_JSON_OUTPUT_NAME=report.json PLAYWRIGHT_BROWSERS_PATH="0" npx playwright test -c . --browser=all --reporter=list,json sample.spec.js
echo "Checking the report"
node ./read-json-report.js ./report.json
@@ -621,6 +623,28 @@ function test_playwright_test_should_work {
echo "${FUNCNAME[0]} success"
}
+function test_playwright_test_stacks_should_work {
+ initialize_test "${FUNCNAME[0]}"
+
+ npm install ${PLAYWRIGHT_CORE_TGZ}
+ npm install ${PLAYWRIGHT_TEST_TGZ}
+ PLAYWRIGHT_BROWSERS_PATH="0" npx playwright install chromium
+ copy_test_scripts
+
+ echo "Running playwright test"
+ OUTPUT=$(DEBUG=pw:api npx playwright test -c . failing.spec.js || true)
+ if [[ "${OUTPUT}" != *"expect.toHaveText started"* ]]; then
+ echo "ERROR: missing 'expect.toHaveText started' in the output"
+ exit 1
+ fi
+ if [[ "${OUTPUT}" != *"failing.spec.js:5:38"* ]]; then
+ echo "ERROR: missing 'failing.spec.js:5:38' in the output"
+ exit 1
+ fi
+
+ echo "${FUNCNAME[0]} success"
+}
+
function initialize_test {
cd ${TEST_ROOT}
local TEST_NAME="./$1"
diff --git a/packages/playwright-test/src/expect.ts b/packages/playwright-test/src/expect.ts
index 68990447ce..b6bc304035 100644
--- a/packages/playwright-test/src/expect.ts
+++ b/packages/playwright-test/src/expect.ts
@@ -156,7 +156,7 @@ function wrap(matcherName: string, matcher: any) {
reportStepError(e);
}
};
- result.displayName = '__PWTRAP__[expect.' + matcherName + ']';
+ Object.defineProperty(result, 'name', { value: '__PWTRAP__[expect.' + matcherName + ']' });
return result;
}