# Selenium — C# Patterns
## Setup
```xml
```
## Basic Test (NUnit)
```csharp
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
using NUnit.Framework;
[TestFixture]
public class LoginTests
{
private IWebDriver driver;
private WebDriverWait wait;
[SetUp]
public void SetUp()
{
driver = new ChromeDriver();
wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
driver.Manage().Window.Maximize();
}
[Test]
public void TestLogin()
{
driver.Navigate().GoToUrl("https://example.com/login");
wait.Until(d => d.FindElement(By.Id("username"))).SendKeys("user@test.com");
driver.FindElement(By.Id("password")).SendKeys("password123");
driver.FindElement(By.CssSelector("button[type='submit']")).Click();
wait.Until(d => d.Url.Contains("/dashboard"));
Assert.That(driver.Title, Does.Contain("Dashboard"));
}
[TearDown]
public void TearDown()
{
driver?.Quit();
}
}
```
## TestMu AI Cloud (C#)
```csharp
var options = new ChromeOptions();
var ltOptions = new Dictionary
{
{ "platform", "Windows 11" },
{ "build", "C# Build" },
{ "name", "C# Test" },
{ "user", Environment.GetEnvironmentVariable("LT_USERNAME") },
{ "accessKey", Environment.GetEnvironmentVariable("LT_ACCESS_KEY") },
{ "video", true },
{ "network", true }
};
options.AddAdditionalOption("LT:Options", ltOptions);
driver = new RemoteWebDriver(
new Uri("https://hub.lambdatest.com/wd/hub"), options);
```