@nbakka/mcp-appium 2.0.21 → 2.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ When asked to open buy SRP, use deeplink to open https://housing.com/in/buy/mumbai/<locality name>. For example: if asked to open 'Mira Road East' buy SRP, then open this deeplink: https://housing.com/in/buy/mumbai/mira_road_east
2
+ Homepage deeplink -> https://housing.com/in/buy/real-estate-mumbai
3
+ Project dedicated page deeplink -> https://housing.com/in/buy/projects/page/319874-sunteck-sky-park-by-sunteck-realty-limited-in-mira-road-east
4
+ Filters on the filter screen may initially be offscreen and require scrolling to view.
5
+ Stop execution if any step fails.
6
+ (Remember this properly - Very important) After the execution is successful/completed, do NOT analyze what you found or did; only generate Appium code.
7
+ Print the Java/Appium code. In our framework, we use the following methods:
8
+ - waitForElementToBeVisible("locator_key", Wait.SHORT); locator_key is locator key and wait can be SHORT, MEDIUM, or LONG.
9
+ - scrollDown(n); // n is the number of times to scroll.
10
+ - navigateBack(); // for back action.
11
+ - deepLink.OpenDeepLink("deeplink_key"); // deeplink_key is deeplink name.
12
+ - getText("locator_key"); // to get text of element.
13
+ Using the above, return code that looks like:
14
+ deepLink.OpenDeepLink(deeplink); // deeplink -> https://housing.com
15
+ waitForElementToBeVisible("view_on_map", Wait.LONG); // view_on_map=//android.widget.TextView[@text="View On Map"]; here xpath should be comments so it can be pasted in xpath sheet.
16
+ When giving output, please remove escape characters before double quotes.
17
+ Do similarly for click and sendKeys methods:
18
+ - click("search_select")
19
+ - sendKeys("locator_key", "string_to_be_passed", Wait.LONG)
20
+ Figure out dynamic paths like //android.widget.TextView[@text="View 180 Properties"] here 180 is not constant so create a xpath like //android.widget.TextView[contains(@text,"View") and contains(@text,"Properties")]
21
+ For repeating logic, create loops
@@ -0,0 +1,13 @@
1
+ {
2
+ "type": "service_account",
3
+ "project_id": "gen-lang-client-0998595520",
4
+ "private_key_id": "99b60e861b2815a0b7e4946fa0697d70f157b4a6",
5
+ "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCylqcylIgnlYFv\nSDSNA5w54FBTGKqwhg55bUYZoO3PYvXywgUDUO/q7jSLIYOLzQb+yiSKOBbJKTrs\ng/HP8Qr/vGoLJBXmEmhheh2YEip2uDERTeIaC9ilyWoDgRa8bWnj2DKUVlEAKK29\nK2cl7k3sejS9QNXW7b38ov3qb4uQK4tBy28rlUs2SpElNsMbO+RJOWxSuRqlWXER\nFD2alSmWB8ZB6ugHeOXsx5kKkNzDlS2wDKQJqZNWqga8LpSl+9lENrdi59qKuRgq\n053N5M/WLGJWyg8W2BWXMhZGCak1NcgPanQ/vFLO2mIljowb8mxtNML6rZfLawKp\nbFre03cZAgMBAAECggEAAJTwD4CfXu2kQc4M6cawvBmIeXTTnYaaRnf+Kfg1vh62\n6WcLaCLb3TqQbkGaMZrl4m+bJd4f6ODbAck+QOyqmgGtoMKp1ZmKwIKK1SN+Auv/\nsOw9h9MxDf01fLRvdAaxOR5Lr+MGGYeIZVzeVafMljAhutoauDwHCesoA5sAa+RP\nBzIa7+N6EmGt/FvAdKAvSuuZZsMUHLoOiHeB3knwjqoKJCHVMNWqpeMyqclIjR+O\nIv37jhlj2z7pbR0n6hfjYQLmGRfSRGvmw1hrDV1ije4RXeNs5/13gUokNf4kBhqn\nQ+t4eI6UEa82lgLS7Msmbcyyh2h2TfFG1Ygx6nYZHwKBgQDhUzdMjCtADBvQnSQw\nV+qWPzOJFdYzURgg1zMXUGnPws8vuUMjuCNEu3AUrtjvc5RVdePAIyN6o/j5HLAV\nt6qksoQkUas/daCzuRG9IWFw2eI0rhs+paMJVIUJQWXt60afgv61rsvLfIC/MBi9\ntl62xI8FNDWzPgSVWTXukIhOzwKBgQDK5p/3dr/S+oSk6E/y1bwejNm8b0VgqvwO\nP9OO2kmDEXTGSlXX5Mn1qW7Wg1n+z5NrDkA3IyRtEbILyylUELooGXVKiKPkiJpE\n+Qi+wsVqmThvqO6cYl8FW64/0UH88ZcvDjyDLfUsei4lY0hRjafTshaoqk0SOyq9\n4UOs3ioVlwKBgHYYtHoVWTHHZuivA+Gmopg+5dbqsArTbQ8BW5DTn7G5y/eaZRsa\njrmed/8PKTpPXKZyFH2GrTjBKmP+ajfnvLN3sRSMDXJER4cK78Yt8bFBMXMk8bii\n/dGND/Eq6q6JSsmd0bwNslijl6MdJUqBhCDM4pz6oU6hqatRR5gS/q43AoGBAIsp\nNGwQyS4V3mYQY80kpNq7NhdUpdvQSgIn6pzewG6hyVq63zes1oukQr3j5xSqH+zc\nIFTwyGn6KgiGtfjPZC5ej6CoKOh0fIJz33ies7ISFrAWyFj/6zYMlG12w3CN7mg6\ntmwuWCrCPeYsuwwcQRAj5ACYlTW82OrUlor48RpPAoGALtMf3SEALRuKvpSqDxpe\nw/XkD098Lq4g+uFbFfN0aL1gyuWvwQ4KtIkmMpENWYC/zFVH79AAWSA7gvEEWE0C\n3FP2lI29GgXPhG+EDS3/dvjY4UPcqDVMFYAen4Z4X0FnKa8Yr5rGPuYtZCsglGmh\nigkENMmOUL6T62YvJATeFd8=\n-----END PRIVATE KEY-----\n",
6
+ "client_email": "mcp-sheet-access@gen-lang-client-0998595520.iam.gserviceaccount.com",
7
+ "client_id": "104386077369721430122",
8
+ "auth_uri": "https://accounts.google.com/o/oauth2/auth",
9
+ "token_uri": "https://oauth2.googleapis.com/token",
10
+ "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
11
+ "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/mcp-sheet-access%40gen-lang-client-0998595520.iam.gserviceaccount.com",
12
+ "universe_domain": "googleapis.com"
13
+ }
package/lib/server.js CHANGED
@@ -149,7 +149,7 @@ const createMcpServer = () => {
149
149
  async () => {
150
150
  try {
151
151
  // Read file from config folder
152
- const filePath = path.join(__dirname, 'config', 'app_context.txt');
152
+ const filePath = path.join(__dirname, 'lib', 'app_context.txt');
153
153
  const fileContent = await fs.readFile(filePath, 'utf-8');
154
154
 
155
155
  // Assuming each note is separated by a newline
@@ -309,7 +309,7 @@ const createMcpServer = () => {
309
309
  const { google } = require('googleapis');
310
310
 
311
311
  // Load credentials
312
- const keyFile = path.join(__dirname, 'config', 'secret.json');
312
+ const keyFile = path.join(__dirname, 'lib', 'secret.json');
313
313
  const credentials = JSON.parse(await fs.readFile(keyFile, 'utf-8'));
314
314
 
315
315
  const auth = new google.auth.GoogleAuth({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nbakka/mcp-appium",
3
- "version": "2.0.21",
3
+ "version": "2.0.22",
4
4
  "description": "Appium MCP",
5
5
  "engines": {
6
6
  "node": ">=18"