Skip to content
Back to skills

Test

ASecurity

Comprehensive test suite for all Socials tools and functionality

  • 23 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added October 17, 2026
ai-agentsgotesting

Works with

  • cli
  • mcp

Security analysis

A100/100

Scanned October 17, 2026

npx -y skills add Brainrot-Creations/plugins --skill test --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Test?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Test
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/brainrot-creations-test-plugins/badge)](https://www.skillsdirectory.com/skills/brainrot-creations-test-plugins)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
description: Comprehensive test suite for all Socials tools and functionality
user-invocable: true
---

# Socials Test Suite

Run comprehensive tests on all Socials tools to verify the extension and MCP server are working correctly.

## Mode Selection

**IMPORTANT: Before running any tests, ask the user which mode they want:**

```
Which test mode would you like to run?

1. **Dry Run** (safe) - Tests read-only tools only. Will NOT post, reply, or engage.
2. **Full Test** (destructive) - Tests ALL tools including posting and engagement.
   WARNING: This will create real posts, replies, likes, and connection requests!

Enter 1 or 2:
```

Wait for user response before proceeding. Default to Dry Run if unclear.

---

## Test Execution

Run tests in this order, reporting results as you go:

### 1. Connection & Access Tests

```
Test: socials_check_access
Expected: connected=true, canUseMcp=true
```

**If this fails, run the RECOVERY FLOW before stopping:**
```
RECOVERY FLOW:
1. socials_refresh_auth → try to restore auth
2. If still fails: socials_restart_bridge → restart WS bridge
3. Ask user to refresh Socials extension in browser
4. Retry socials_check_access
5. If still fails after recovery, stop and report the issue
```

```
Test: socials_health_check
Expected: is_healthy=true, connected=true
```

```
Test: socials_diagnostics
Expected: status=ok, extension_connected=true
```

### 2. Browser Control Tests

```
Test: socials_get_active_tab
Expected: Returns current tab info (tabId, url, title)
```

```
Test: socials_get_agent_tab
Expected: Returns agent tab info or null if not set
```

If no agent tab is set:
```
Test: socials_open_tab (url: "https://x.com/home", focus: false)
Expected: success=true, agentTabPinned=true
```

```
Test: socials_get_agent_tab (verify it's now set)
Expected: Returns the tab we just opened
```

```
Test: socials_set_agent_tab (tabId: <current agent tab id>)
Expected: success=true (re-pins the same tab)
```

```
Test: socials_focus_agent_tab
Expected: success=true, agent tab receives focus
```

```
Test: socials_refresh_auth
Expected: Returns auth status (validates device auth flow)
```

```
Test: socials_reload_tab
Expected: success=true, agent tab reloaded
```

Optional (only if testing recovery):
```
Test: socials_restart_bridge
Expected: success=true, message includes "listening on 127.0.0.1:9847"
Note: After this, user must refresh browser extension before continuing
```

### 3. X (Twitter) Tests - Read Only

Ensure agent tab is on X (`https://x.com/home`):

```
Test: socials_get_feed (platform: "x", count: 5)
Expected: Returns array of posts with id, author, content
```

```
Test: socials_get_page_content
Expected: Returns posts from current page
```

```
Test: socials_scroll (direction: "down", amount: 400)
Expected: success=true
```

```
Test: socials_x_search (query: "test")
Expected: success=true, navigates to search results (default mode: top)
```

```
Test: socials_x_search (query: "startup", mode: "latest")
Expected: success=true, navigates to Latest tab (f=live)
```

```
Test: socials_x_search (query: "AI", from: "elonmusk", min_faves: 100)
Expected: query="AI from:elonmusk min_faves:100"
Note: Tests user filter + engagement threshold
```

```
Test: socials_x_search (query: "tech", filter: "media", is_retweet: false, lang: "en")
Expected: query="tech filter:media -is:retweet lang:en"
Note: Tests content filter + exclusion + language
```

```
Test: socials_x_search (query: "news", since: "2026-01-01", until: "2026-03-01")
Expected: query="news since:2026-01-01 until:2026-03-01"
Note: Tests date range (YYYY-MM-DD format)
```

```
Test: socials_x_search (query: "#buildinpublic", has: ["media", "links"], min_retweets: 5)
Expected: query="#buildinpublic has:media has:links min_retweets:5"
Note: Tests hashtag + has filters + engagement
```

```
Test: socials_x_search (query: "conference", near: "San Francisco", place_country: "US")
Expected: query="conference near:\"San Francisco\" place_country:US"
Note: Tests location filters
```

```
Test: socials_x_search (query: "thread", is_reply: false, mode: "latest")
Expected: query="thread -is:reply", mode=latest
Note: Tests reply exclusion for finding original posts
```

After search results load, test post context:
```
Test: socials_get_feed (platform: "x", count: 1)
Expected: Returns at least one post with an id
```

```
Test: socials_get_post_context (tweet_id: <id from previous feed>)
Expected: Returns context around the post (replies, parent thread)
```

Navigate to notifications for notification tests:
```
Test: socials_navigate (url: "https://x.com/notifications")
Expected: success=true
```

Wait 2 seconds, then:
```
Test: socials_x_notifications (count: 5)
Expected: Returns array of notifications with:
  - type: "like", "follow", "repost", "reply", "quote", "mention", or "unknown"
  - user: { name, handle, avatarUrl, isVerified }
  - timestamp: ISO datetime string
  - relatedContent: truncated text of the liked/mentioned tweet (if applicable)
  - tweetUrl: URL to the tweet (for tweets)
  - tweetId: Tweet ID for use with socials_engage_post / socials_quick_reply
Note: Must be on https://x.com/notifications page
Note: If fewer notifications than requested, will auto-scroll up to 3 times
```

Test notification engagement workflow (if tweet notification found with tweetId):
```
Test: socials_engage_post (tweet_id: <tweetId from notification>, like: true, bookmark: true)
Expected: success=true, likes and bookmarks the tweet directly from notifications page
Note: No navigation needed - engage_post works on current page
```

```
Test: socials_quick_reply (tweet_id: <tweetId from notification>, reply: "Thanks for the engagement! [timestamp]")
Expected: success=true, replies to the notification tweet directly
Note: Opens reply modal on the notification tweet and posts - no navigation needed
```

### 4. X (Twitter) Tests - Destructive [FULL MODE ONLY]

**Skip this section in Dry Run mode.**

Before running, confirm with user:
```
About to test X engagement tools. This will:
- Create a test post on your X account
- Like and bookmark a post
- Reply to a post

Continue? (yes/no)
```

If confirmed:

```
Test: socials_create_post (content: "Test post from Socials MCP - please ignore [timestamp]", platform: "x")
Expected: success=true, returns post URL
Action: Note the post URL to delete manually later
```

```
Test: socials_create_post (content: "Testing newlines:\n\nLine 1\nLine 2\nLine 3\n\n[timestamp]", platform: "x")
Expected: success=true, post should display with proper line breaks
Action: Note the post URL to delete manually later
Note: Tests newline (\n) support in X compose box
```

```
Test: socials_create_post with video (content: "Testing video upload [timestamp]", platform: "x", media: [video file])
Expected: success=true, waits for upload progress to reach 100% before posting
Action: Note the post URL to delete manually later
Note: Tests video upload progress detection (waits for "Processing X%" to complete)
```

```
Test: socials_engage_post (tweet_id: <id from feed>, like: true, bookmark: true)
Expected: success=true
Note: This will like and bookmark a real post
```

```
Test: socials_quick_reply (tweet_id: <id from feed>, reply: "Test reply from Socials MCP [timestamp]")
Expected: success=true, returns reply URL
Action: Note the reply URL to delete manually later
```

After tests, remind user:
```
Destructive X tests complete. Please manually delete:
- Test post: [URL]
- Test reply: [URL]
- Undo like/bookmark if desired
```

### 5. LinkedIn Tests - Read Only

Navigate to LinkedIn:
```
Test: socials_navigate (url: "https://www.linkedin.com/feed/")
Expected: success=true
```

Wait 2-3 seconds for page load, then:

```
Test: socials_get_feed (platform: "linkedin", count: 5)
Expected: Returns array of LinkedIn posts
```

```
Test: socials_linkedin_posts_search (query: "startup")
Expected: success=true
```

```
Test: socials_linkedin_people_search (query: "software engineer")
Expected: success=true
```

```
Test: socials_linkedin_get_people (count: 3)
Expected: Returns array of people results
```

```
Test: socials_linkedin_go_to_page (pageNumber: 2)
Expected: success=true, navigates to page 2 of results
```

```
Test: socials_linkedin_next_page
Expected: success=true, navigates to page 3 of results
```

Navigate to a profile for connection status and profile tests:
```
Test: socials_navigate (url: "https://www.linkedin.com/in/satyanadella/")
Expected: success=true
```

Wait 2 seconds, then:
```
Test: socials_linkedin_connection_status
Expected: Returns connection status with one of:
  - connected (detected via "More" menu button)
  - pending_sent (detected via "Pending, click to withdraw" button)
  - not_connected (detected via "Invite to connect" button)
  - follow_only, unknown
Also returns actions_available array
```

```
Test: socials_linkedin_profile
Expected: Returns profile details including:
  - Basic: name, headline, location, profileUrl
  - Connection: connectionDegree, followers, connections
  - Content: about, currentRole, experiences, education, skills
  - Contact Info: contactInfo object with emails[], phones[], websites[], birthday, twitter, address
Note: Tab will briefly focus to trigger LinkedIn's lazy-loaded content
Verify: Contact info extraction works (requires 1st degree connection for full data)
```

For contact info verification, navigate to a 1st degree connection:
```
Test: socials_linkedin_profile (on a 1st degree connection)
Expected: contactInfo should contain at least some fields if shared by connection
Note: Contact info visibility depends on the connection's privacy settings
```

### 6. LinkedIn Tests - Destructive [FULL MODE ONLY]

**Skip this section in Dry Run mode.**

Before running, confirm with user:
```
About to test LinkedIn engagement tools. This will:
- Like a LinkedIn post
- Send a connection request (optional)

Continue? (yes/no)
Also test connection request? (yes/no) - WARNING: Cannot be easily undone!
```

If confirmed:

Navigate to feed first:
```
Test: socials_navigate (url: "https://www.linkedin.com/feed/")
```

```
Test: socials_get_feed (platform: "linkedin", count: 1)
Expected: Returns at least one post with post_id
```

```
Test: socials_linkedin_engage (post_id: <id from feed>, like: true)
Expected: success=true
Note: This will like a real LinkedIn post
```

If user confirmed connection request test:
```
Test: socials_linkedin_people_search (query: "test account")
Expected: success=true
```

```
Test: socials_linkedin_get_people (count: 1)
Expected: Returns a person result
```

```
Test: socials_linkedin_connect (profile_url: <url from people result>, note: "Test connection from Socials MCP")
Expected: success=true
WARNING: This sends a real connection request!
```

After tests, remind user:
```
Destructive LinkedIn tests complete. You may want to:
- Unlike the post if desired
- Withdraw connection request if sent
```

### 7. Reddit Tests

Navigate to Reddit:
```
Test: socials_navigate (url: "https://www.reddit.com/")
Expected: success=true
```

Wait 2-3 seconds for page load, then:

```
Test: socials_get_feed (platform: "reddit", count: 5)
Expected: Returns array of Reddit posts with title, author, subreddit
```

```
Test: socials_get_page_content
Expected: Returns posts from current Reddit page
```

```
Test: socials_scroll (direction: "down", amount: 400)
Expected: success=true
```

Navigate to a specific subreddit:
```
Test: socials_navigate (url: "https://www.reddit.com/r/programming/")
Expected: success=true
```

Wait 2 seconds, then:
```
Test: socials_get_feed (platform: "reddit", count: 3)
Expected: Returns posts from r/programming
```

### 8. Persona Tests

```
Test: socials_list_personas
Expected: Returns array of personas with id and name
```

### 9. Feature Flag Tests

```
Test: socials_diagnostics (refresh: true)
Expected: Returns feature_gating status with flags
```

---

## Reporting Results

After each test, report:
- Tool name
- Status: PASS / FAIL / SKIP
- Brief result or error message

At the end, provide a summary:

```
=== Socials Test Results ===
Mode: [Dry Run / Full Test]

Connection Tests:        X/X passed
Browser Tests:           X/X passed
X Read Tests:            X/X passed
X Destructive Tests:     X/X passed (or SKIPPED in dry run)
LinkedIn Read Tests:     X/X passed
LinkedIn Destructive:    X/X passed (or SKIPPED in dry run)
Reddit Tests:            X/X passed
Persona Tests:           X/X passed
Feature Flag Tests:      X/X passed

Total: XX/XX tests passed

[Any issues or recommendations]
[If Full Mode: List of posts/actions to clean up manually]
```

---

## Test Guidelines

1. **Always ask mode first**: Never run destructive tests without explicit confirmation

2. **Handle failures gracefully**: If a test fails, log it and continue with other tests

3. **Wait for page loads**: After navigation, wait 2-3 seconds before testing feed/content tools

4. **Clean up reminders**: In Full Mode, always remind user what to clean up at the end

5. **Report issues clearly**: If something fails, explain what the user might need to fix

6. **Timestamps**: Add timestamps to test posts/replies so they're identifiable

7. **Newline testing**: When testing posts with \n characters, verify the output has actual line breaks

8. **Video uploads**: Large video uploads may take 1-2 minutes; the extension waits for 100% progress

9. **Modal targeting**: Posts/replies correctly target the modal compose box (not timeline composer)

10. **X Advanced Search**: Test all modes (top/latest/people/photos/videos) and operators:
    - User: from, to, retweets_of
    - Time: since/until (YYYY-MM-DD), since_time/until_time (Unix)
    - Engagement: min_faves, min_retweets, min_replies
    - Content: filter (media/images/video/links), has[], is_reply, is_retweet
    - Location: lang, near, place, place_country
    - Advanced: list, conversation_id

---

## Optional Parameters

The user may specify:
- `--dry-run` or `--safe` to skip mode selection and run non-destructive only
- `--full` to skip mode selection and run all tests (still confirms before destructive)
- `--platform x`, `--platform linkedin`, or `--platform reddit` to test only one platform
- `--skip-browser` to skip browser control tests (if tab is already set up)
- `--verbose` for detailed output of each tool response

---

## Example Output - Dry Run

```
Running Socials Test Suite...

Mode Selection: Which test mode? (1=Dry Run, 2=Full Test)
> 1

Running in DRY RUN mode (safe, non-destructive)

[1/9] Connection Tests
  socials_check_access: PASS (connected, Pro tier)
  socials_health_check: PASS (healthy, 12ms latency)
  socials_diagnostics: PASS (v1.0.39)

[2/9] Browser Control Tests
  socials_get_active_tab: PASS (tab 123, x.com)
  socials_get_agent_tab: PASS (tab 123 pinned)
  socials_set_agent_tab: PASS (tab re-pinned)
  socials_focus_agent_tab: PASS (focused)
  socials_refresh_auth: PASS (auth valid)
  socials_reload_tab: PASS (reloaded)

[3/9] X (Twitter) Read Tests
  socials_get_feed: PASS (5 posts retrieved)
  socials_get_page_content: PASS (5 posts)
  socials_scroll: PASS
  socials_x_search (basic): PASS (mode: top)
  socials_x_search (mode: latest): PASS (f=live)
  socials_x_search (from + min_faves): PASS (user + engagement)
  socials_x_search (filter + is_retweet + lang): PASS (content filters)
  socials_x_search (since/until): PASS (date range)
  socials_x_search (hashtag + has + min_retweets): PASS (has filters)
  socials_x_search (near + place_country): PASS (location)
  socials_x_search (is_reply: false): PASS (exclusion)
  socials_get_post_context: PASS (context retrieved)
  socials_navigate (notifications): PASS (x.com/notifications)
  socials_x_notifications: PASS (5 notifications: 3 likes, 1 follow, 1 mention)

[4/9] X (Twitter) Destructive Tests
  SKIPPED (Dry Run mode)

[5/9] LinkedIn Read Tests
  socials_navigate: PASS (linkedin.com/feed)
  socials_get_feed: PASS (5 posts retrieved)
  socials_linkedin_posts_search: PASS
  socials_linkedin_people_search: PASS
  socials_linkedin_get_people: PASS (3 results)
  socials_linkedin_go_to_page: PASS (page 2)
  socials_linkedin_next_page: PASS (page 3)
  socials_linkedin_connection_status: PASS (not_connected)
  socials_linkedin_profile: PASS (profile details)

[6/9] LinkedIn Destructive Tests
  SKIPPED (Dry Run mode)

[7/9] Reddit Tests
  socials_navigate: PASS (reddit.com)
  socials_get_feed: PASS (5 posts retrieved)
  socials_get_page_content: PASS (posts on page)
  socials_scroll: PASS
  socials_navigate (subreddit): PASS (r/programming)
  socials_get_feed (subreddit): PASS (3 posts)

[8/9] Persona Tests
  socials_list_personas: PASS (4 personas)

[9/9] Feature Flag Tests
  socials_diagnostics (refresh): PASS (flags loaded)

=== Socials Test Results ===
Mode: Dry Run (non-destructive)

All 33 read-only tests passed!
6 destructive tests skipped.

Your Socials setup is working correctly.
```

## Example Output - Full Test

```
Running Socials Test Suite...

Mode Selection: Which test mode? (1=Dry Run, 2=Full Test)
> 2

WARNING: Full Test mode will create real posts and engagement!
Running in FULL TEST mode

[1/9] Connection Tests
  socials_check_access: PASS (connected, Pro tier)
  ...

[3/9] X (Twitter) Read Tests
  ...all pass...

[4/9] X (Twitter) Destructive Tests
  Confirm: About to create posts and engage. Continue? (yes/no)
  > yes
  socials_create_post: PASS (posted: x.com/user/status/123456)
  socials_engage_post: PASS (liked + bookmarked)
  socials_quick_reply: PASS (replied: x.com/user/status/123457)

[5/9] LinkedIn Read Tests
  ...all pass...

[6/9] LinkedIn Destructive Tests
  Confirm: About to like posts and optionally connect. Continue? (yes/no)
  > yes
  Test connection request too? (yes/no)
  > no
  socials_linkedin_engage: PASS (liked post)
  socials_linkedin_connect: SKIPPED (user declined)

...

=== Socials Test Results ===
Mode: Full Test (destructive)

All 36 tests passed! (1 skipped by user choice)

CLEANUP REQUIRED:
- Delete test post: x.com/user/status/123456
- Delete test reply: x.com/user/status/123457
- Undo like/bookmark on X if desired
- Undo LinkedIn like if desired
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.