Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 43 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# =========================
# Java / JVM
# =========================

# Compiled class file
*.class

Expand All @@ -10,7 +14,7 @@
# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
# Package Files
*.jar
*.war
*.nar
Expand All @@ -19,5 +23,42 @@
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
# JVM crash logs
hs_err_pid*


# =========================
# .NET / C# (Android & iOS)
# =========================

# Build output folders
[Bb]in/
[Oo]bj/

# NuGet
packages/
*.nupkg
project.assets.json
project.nuget.cache
*.nuget.props
*.nuget.targets


# =========================
# Visual Studio / IDEs
# =========================

.vs/
*.user
*.suo
*.rsuser
*.userosscache
*.sln.docstates


# =========================
# OS files
# =========================

.DS_Store
Thumbs.db
17 changes: 11 additions & 6 deletions android/csharp-appium-android/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,23 @@ static void Main(string[] args)
{
AppiumOptions caps = new AppiumOptions();

caps.AddAdditionalCapability("user", "YOUR_LT_USERNAME"); //Add the LT Username
caps.AddAdditionalCapability("accessKey", "YOUR_LT_ACCESS_KEY"); //Add the LT Access key
// caps.AddAdditionalCapability("user", "YOUR_LT_USERNAME"); //Add the LT Username
// caps.AddAdditionalCapability("accessKey", "YOUR_LT_ACCESS_KEY"); //Add the LT Access key
caps.AddAdditionalCapability("user", Environment.GetEnvironmentVariable("LT_USERNAME"));
caps.AddAdditionalCapability("accessKey", Environment.GetEnvironmentVariable("LT_ACCESS_KEY"));


// Set URL of the application under test
caps.AddAdditionalCapability("app", "APP_URL"); //Add the App ID
caps.AddAdditionalCapability("app", "APP_URL"); //Add the App ID

// Specify device and os_version
caps.AddAdditionalCapability("deviceName", "Galaxy S21 Ultra 5G"); //Add the Device Details
caps.AddAdditionalCapability("platformVersion", "11");
caps.AddAdditionalCapability("deviceName", "Galaxy S25"); //Add the Device Details
caps.AddAdditionalCapability("platformVersion", "15");
caps.AddAdditionalCapability("platformName", "Android");
caps.AddAdditionalCapability("isRealMobile", true);
caps.AddAdditionalCapability("network", false);
caps.AddAdditionalCapability("autoGrantPermissions", true);
caps.AddAdditionalCapability("autoAcceptAlerts", true);

caps.AddAdditionalCapability("project", "CSharp Sample Android");
caps.AddAdditionalCapability("build", "CSharp Sample Android");
Expand All @@ -34,7 +39,7 @@ static void Main(string[] args)
// and desired capabilities defined above
IOSDriver<IOSElement> driver = new IOSDriver<IOSElement>(
new Uri("https://mobile-hub.lambdatest.com/wd/hub"), caps);
driver.Manage().Timeouts().SetScriptTimeout(TimeSpan.FromSeconds(10));
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
// Test case for the sample iOS app.
// If you have uploaded your app, update the test case here.
IOSElement color = (IOSElement)new WebDriverWait(driver, TimeSpan.FromSeconds(30)).Until(
Expand Down
4 changes: 2 additions & 2 deletions android/csharp-appium-android/csharp-appium.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp6.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<RootNamespace>csharp_appium_first_test</RootNamespace>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Castle.Core" Version="4.4.1" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3"/>
<PackageReference Include="Appium.WebDriver" Version="4.1.1" />
<PackageReference Include="DotNetSeleniumExtras.WaitHelpers" Version="3.11.0" />
</ItemGroup>
Expand Down
7 changes: 0 additions & 7 deletions android/csharp-appium-android/packages.config

This file was deleted.

69 changes: 69 additions & 0 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
trigger:
- master

pr:
- master

# ---------- PARAMETERS ----------
parameters:
- name: platform
displayName: "Which project do you want to run?"
type: string
default: both
values:
- android
- ios
- both

# ---------- SCHEDULE ----------
schedules:
- cron: "0 2 * * *" # Daily 2 AM UTC
displayName: Nightly Mobile Tests
branches:
include:
- main
always: "true"

# ---------- AGENT ----------
pool:
vmImage: ubuntu-latest

# ---------- VARIABLES ----------
variables:
- group: lambdatest-secrets

# ---------- STEPS ----------
steps:
- task: UseDotNet@2
displayName: "Install .NET 8 SDK"
inputs:
packageType: sdk
version: '8.0.x'

# ---------- ANDROID ----------
- script: |
echo "Running Android Appium tests"
cd android/csharp-appium-android
dotnet restore
dotnet build --configuration Release
dotnet run --configuration Release
displayName: "Run Android Tests"
condition: |
or(
eq('${{ parameters.platform }}', 'android'),
eq('${{ parameters.platform }}', 'both')
)

# ---------- iOS ----------
- script: |
echo "Running iOS Appium tests"
cd ios/csharp-appium-ios
dotnet restore
dotnet build --configuration Release
dotnet run --configuration Release
displayName: "Run iOS Tests"
condition: |
or(
eq('${{ parameters.platform }}', 'ios'),
eq('${{ parameters.platform }}', 'both')
)
17 changes: 11 additions & 6 deletions ios/csharp-appium-ios/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,26 +13,31 @@ static void Main(string[] args)
{
AppiumOptions caps = new AppiumOptions();

caps.AddAdditionalCapability("user", "YOUR_LT_USERNAME"); //Enter the Username here
caps.AddAdditionalCapability("accessKey", "YOUR_LT_ACCESS_KEY"); //Enter the Access key here
// caps.AddAdditionalCapability("user", "YOUR_LT_USERNAME"); //Enter the Username here
// caps.AddAdditionalCapability("accessKey", "YOUR_LT_ACCESS_KEY"); //Enter the Access key here
caps.AddAdditionalCapability("user", Environment.GetEnvironmentVariable("LT_USERNAME"));
caps.AddAdditionalCapability("accessKey", Environment.GetEnvironmentVariable("LT_ACCESS_KEY"));

// Set URL of the application under test
caps.AddAdditionalCapability("app", "APP_URL"); //Enter the App URL here.
caps.AddAdditionalCapability("app", "APP_URL"); //Add the App ID

// Specify device and os_version
caps.AddAdditionalCapability("deviceName", "iPhone 12"); //Change the device name here
caps.AddAdditionalCapability("platformVersion", "15");
caps.AddAdditionalCapability("deviceName", "iPhone 15"); //Change the device name here
caps.AddAdditionalCapability("platformVersion", "17");
caps.AddAdditionalCapability("platformName", "iOS");
caps.AddAdditionalCapability("isRealMobile", true);
caps.AddAdditionalCapability("network", false);

caps.AddAdditionalCapability("project", "First CSharp project");
caps.AddAdditionalCapability("build", "CSharp iOS");
caps.AddAdditionalCapability("name", "first_test");
caps.AddAdditionalCapability("autoGrantPermissions", true);
caps.AddAdditionalCapability("autoAcceptAlerts", true);

IOSDriver<IOSElement> driver = new IOSDriver<IOSElement>(
new Uri("https://mobile-hub.lambdatest.com/wd/hub"), caps);
driver.Manage().Timeouts().SetScriptTimeout(TimeSpan.FromSeconds(10));
// driver.Manage().Timeouts().SetScriptTimeout(TimeSpan.FromSeconds(10));
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
IOSElement color = (IOSElement)new WebDriverWait(driver, TimeSpan.FromSeconds(30)).Until(
SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable(MobileBy.Id("color"))
);
Expand Down
4 changes: 2 additions & 2 deletions ios/csharp-appium-ios/csharp-appium-first.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp6.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<RootNamespace>csharp_appium_first_ios</RootNamespace>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Appium.WebDriver" Version="4.1.1" />
<PackageReference Include="Castle.Core" Version="4.4.1" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="DotNetSeleniumExtras.WaitHelpers" Version="3.11.0" />
<PackageReference Include="NUnit" Version="3.12.0" />
</ItemGroup>
Expand Down
7 changes: 0 additions & 7 deletions ios/csharp-appium-ios/packages.config

This file was deleted.