From 3119102b107ad75e98e83b128f02e6a504e832e8 Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Fri, 11 Feb 2022 13:02:27 -0800 Subject: [PATCH] fix(assertions): include expected/actual values into error message (#808) --- .../java/com/microsoft/playwright/impl/AssertionsBase.java | 5 ++++- .../com/microsoft/playwright/TestLocatorAssertions.java | 7 ++++--- .../java/com/microsoft/playwright/TestPageAssertions.java | 4 ++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/playwright/src/main/java/com/microsoft/playwright/impl/AssertionsBase.java b/playwright/src/main/java/com/microsoft/playwright/impl/AssertionsBase.java index eb619799..14561c25 100644 --- a/playwright/src/main/java/com/microsoft/playwright/impl/AssertionsBase.java +++ b/playwright/src/main/java/com/microsoft/playwright/impl/AssertionsBase.java @@ -67,7 +67,10 @@ class AssertionsBase { if (expected == null) { throw new AssertionFailedError(message + log); } - throw new AssertionFailedError(message + log, formatValue(expected), formatValue(actual)); + ValueWrapper expectedValue = formatValue(expected); + ValueWrapper actualValue = formatValue(actual); + message += ": " + expectedValue.getStringRepresentation() + "\nReceived: " + actualValue.getStringRepresentation() + "\n"; + throw new AssertionFailedError(message + log, expectedValue, actualValue); } } diff --git a/playwright/src/test/java/com/microsoft/playwright/TestLocatorAssertions.java b/playwright/src/test/java/com/microsoft/playwright/TestLocatorAssertions.java index 6b536382..c9c37730 100644 --- a/playwright/src/test/java/com/microsoft/playwright/TestLocatorAssertions.java +++ b/playwright/src/test/java/com/microsoft/playwright/TestLocatorAssertions.java @@ -190,7 +190,8 @@ public class TestLocatorAssertions extends TestBase { } catch (AssertionFailedError e) { assertEquals("[Text 1, Text 3, Extra]", e.getExpected().getStringRepresentation()); assertEquals("[Text 1, Text 3]", e.getActual().getStringRepresentation()); - assertTrue(e.getMessage().contains("Locator expected to have text"), e.getMessage()); + assertTrue(e.getMessage().contains("Locator expected to have text: [Text 1, Text 3, Extra]"), e.getMessage()); + assertTrue(e.getMessage().contains("Received: [Text 1, Text 3]"), e.getMessage()); } } @@ -234,7 +235,7 @@ public class TestLocatorAssertions extends TestBase { } catch (AssertionFailedError e) { assertEquals("foo", e.getExpected().getStringRepresentation()); assertEquals("node", e.getActual().getStringRepresentation()); - assertTrue(e.getMessage().contains("Locator expected to have attribute 'id'"), e.getMessage()); + assertTrue(e.getMessage().contains("Locator expected to have attribute 'id': foo\nReceived: node"), e.getMessage()); } } @@ -255,7 +256,7 @@ public class TestLocatorAssertions extends TestBase { } catch (AssertionFailedError e) { assertEquals(".Nod..", e.getExpected().getStringRepresentation()); assertEquals("node", e.getActual().getStringRepresentation()); - assertTrue(e.getMessage().contains("Locator expected to have attribute 'id' matching regex"), e.getMessage()); + assertTrue(e.getMessage().contains("Locator expected to have attribute 'id' matching regex: .Nod..\nReceived: node"), e.getMessage()); } } diff --git a/playwright/src/test/java/com/microsoft/playwright/TestPageAssertions.java b/playwright/src/test/java/com/microsoft/playwright/TestPageAssertions.java index 899fc18e..e8bd32b0 100644 --- a/playwright/src/test/java/com/microsoft/playwright/TestPageAssertions.java +++ b/playwright/src/test/java/com/microsoft/playwright/TestPageAssertions.java @@ -106,7 +106,7 @@ public class TestPageAssertions extends TestBase { } catch (AssertionFailedError e) { assertEquals("foo", e.getExpected().getValue()); assertEquals("Woof-Woof", e.getActual().getValue()); - assertTrue(e.getMessage().contains("Page title expected to be"), e.getMessage()); + assertTrue(e.getMessage().contains("Page title expected to be: foo\nReceived: Woof-Woof"), e.getMessage()); } } @@ -125,7 +125,7 @@ public class TestPageAssertions extends TestBase { } catch (AssertionFailedError e) { assertEquals("^foo[AB]", e.getExpected().getStringRepresentation()); assertEquals("Woof-Woof", e.getActual().getValue()); - assertTrue(e.getMessage().contains("Page title expected to match regex"), e.getMessage()); + assertTrue(e.getMessage().contains("Page title expected to match regex: ^foo[AB]\nReceived: Woof-Woof"), e.getMessage()); } }