docs/src/test-assertions-csharp-java-python.md
| Assertion | Description |
|---|---|
[method: LocatorAssertions.toBeAttached] | Element is attached |
[method: LocatorAssertions.toBeChecked] | Checkbox is checked |
[method: LocatorAssertions.toBeDisabled] | Element is disabled |
[method: LocatorAssertions.toBeEditable] | Element is editable |
[method: LocatorAssertions.toBeEmpty] | Container is empty |
[method: LocatorAssertions.toBeEnabled] | Element is enabled |
[method: LocatorAssertions.toBeFocused] | Element is focused |
[method: LocatorAssertions.toBeHidden] | Element is not visible |
[method: LocatorAssertions.toBeInViewport] | Element intersects viewport |
[method: LocatorAssertions.toBeVisible] | Element is visible |
[method: LocatorAssertions.toContainClass] | Element has specified CSS classes |
[method: LocatorAssertions.toContainText] | Element contains text |
[method: LocatorAssertions.toHaveAccessibleDescription] | Element has a matching accessible description |
[method: LocatorAssertions.toHaveAccessibleName] | Element has a matching accessible name |
[method: LocatorAssertions.toHaveAttribute] | Element has a DOM attribute |
[method: LocatorAssertions.toHaveClass] | Element has a class property |
[method: LocatorAssertions.toHaveCount] | List has exact number of children |
[method: LocatorAssertions.toHaveCSS] | Element has CSS property |
[method: LocatorAssertions.toHaveId] | Element has an ID |
[method: LocatorAssertions.toHaveJSProperty] | Element has a JavaScript property |
[method: LocatorAssertions.toHaveRole] | Element has a specific ARIA role |
[method: LocatorAssertions.toHaveText] | Element matches text |
[method: LocatorAssertions.toHaveValue] | Input has a value |
[method: LocatorAssertions.toHaveValues] | Select has options selected |
[method: LocatorAssertions.toMatchAriaSnapshot] | Element matches provided Aria snapshot |
[method: PageAssertions.toHaveTitle] | Page has a title |
[method: PageAssertions.toHaveURL] | Page has a URL |
[method: APIResponseAssertions.toBeOK] | Response has an OK status |
You can specify a custom expect message as a second argument to the expect function, for example:
expect(page.get_by_text("Name"), "should be logged in").to_be_visible()
When expect fails, the error would look like this:
def test_foobar(page: Page) -> None:
> expect(page.get_by_text("Name"), "should be logged in").to_be_visible()
E AssertionError: should be logged in
E Actual value: None
E Call log:
E LocatorAssertions.to_be_visible with timeout 5000ms
E waiting for get_by_text("Name")
E waiting for get_by_text("Name")
tests/test_foobar.py:22: AssertionError
You can specify a custom timeout for assertions either globally or per assertion. The default timeout is 5 seconds.
from playwright.sync_api import expect
expect.set_options(timeout=10_000)
<Tabs groupId="test-runners" defaultValue="mstest" values={[ {label: 'MSTest', value: 'mstest'}, {label: 'NUnit', value: 'nunit'}, {label: 'xUnit', value: 'xunit'}, {label: 'xUnit v3', value: 'xunit-v3'}, ] }> <TabItem value="nunit">
using Microsoft.Playwright;
using Microsoft.Playwright.NUnit;
using NUnit.Framework;
namespace PlaywrightTests;
[Parallelizable(ParallelScope.Self)]
[TestFixture]
public class Tests : PageTest
{
[OneTimeSetUp]
public void GlobalSetup()
{
SetDefaultExpectTimeout(10_000);
}
// ...
}
using Microsoft.Playwright;
using Microsoft.Playwright.MSTest;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace PlaywrightTests;
[TestClass]
public class UnitTest1 : PageTest
{
[ClassInitialize]
public static void GlobalSetup(TestContext context)
{
SetDefaultExpectTimeout(10_000);
}
// ...
}
using Microsoft.Playwright;
using Microsoft.Playwright.Xunit;
namespace PlaywrightTests;
public class UnitTest1: PageTest
{
UnitTest1()
{
SetDefaultExpectTimeout(10_000);
}
// ...
}
using Microsoft.Playwright;
using Microsoft.Playwright.Xunit.v3;
namespace PlaywrightTests;
public class UnitTest1: PageTest
{
UnitTest1()
{
SetDefaultExpectTimeout(10_000);
}
// ...
}
from playwright.sync_api import expect
def test_foobar(page: Page) -> None:
expect(page.get_by_text("Name")).to_be_visible(timeout=10_000)
await Expect(Page.GetByText("Name")).ToBeVisibleAsync(new() { Timeout = 10_000 });