Skip to main content

AI-powered Selenium IDE (.side) player and builder for Selenium and Playwright

Project description

Side Player (side-builder)

side-player is a next-generation automation tool that bridges the gap between AI-driven intent and rock-solid execution. It allows you to create Selenium IDE (.side) scripts interactively using natural language and execute them anywhere using Playwright or Selenium.


Quick Start

1. Installation

Install the package via pip or uv:

pip install side-player
# or using uv
uv tool install side-player

Demo #1: Generate *.side files and demo1_{sync,async,sel_sync}.py

% side-builder --output demo1
Using OPENAI_API_KEY=sk-proj-OlHCz-hz******************************

[Step 1] AI prompt for browser action [exit]: Go to the home of https://saucedemo.com
Playing: sides\demo1_step_1.side ()
    Success: open https://saucedemo.com
    Save sides\demo1_step_1.side? [Y/n]:

[Step 2] AI prompt for browser action [exit]: Log in
Playing: sides\demo1_step_2.side ()
    Success: open https://www.saucedemo.com/
    Success: type id=user-name
    Success: type id=password
    Success: click id=login-button
    Save sides\demo1_step_2.side? [Y/n]:

[Step 3] AI prompt for browser action [exit]: Add a backpack to the cart
Playing: sides\demo1_step_3.side ()
    Success: click id=add-to-cart-sauce-labs-backpack
    Save sides\demo1_step_3.side? [Y/n]:

[Step 4] AI prompt for browser action [exit]: Go to cart for checkout
Playing: sides\demo1_step_4.side ()
    Success: click css=.shopping_cart_link
    Save sides\demo1_step_4.side? [Y/n]:

[Step 5] AI prompt for browser action [exit]: Click Checkout
Playing: sides\demo1_step_5.side ()
    Success: click css=.btn.btn_action.btn_medium.checkout_button
    Save sides\demo1_step_5.side? [Y/n]:

[Step 6] AI prompt for browser action [exit]: Enter John as first name, Doe as last name, 11111 as zip code and click Continue
Playing: sides\demo1_step_6.side ()
    Success: type id=first-name
    Success: type id=last-name
    Success: type id=postal-code
    Success: click id=continue
    Save sides\demo1_step_6.side? [Y/n]:

[Step 7] AI prompt for browser action [exit]: Click Finish
Playing: sides\demo1_step_7.side ()
    Success: click id=finish
    Save sides\demo1_step_7.side? [Y/n]:

[Step 8] AI prompt for browser action [exit]: Click Back Home
Playing: sides\demo1_step_8.side ()
    Success: click css=.btn.btn_primary.btn_small[id='back-to-products']
    Save sides\demo1_step_8.side? [Y/n]:

[Step 9] AI prompt for browser action [exit]: Log out
Playing: sides\demo1_step_9.side ()
    Success: click id=react-burger-menu-btn
    Success: click id=logout_sidebar_link
    Save sides\demo1_step_9.side? [Y/n]:

[Step 10] AI prompt for browser action [exit]:

Scripts created: demo1_sync.py, demo1_async.py, demo1_sel_sync.py
Side files saved in: sides/

Demo #2: Playing *.side files using Playwright Sync API

% uv run demo1_sync.py
Playing: sides/demo1_step_1.side (Go to the home of https://saucedemo.com)
    Success: open https://saucedemo.com
Playing: sides/demo1_step_2.side (Log in)
    Success: open https://www.saucedemo.com/
    Success: type id=user-name
    Success: type id=password
    Success: click id=login-button
Playing: sides/demo1_step_3.side (Add a backpack to the cart)
    Success: click id=add-to-cart-sauce-labs-backpack
Playing: sides/demo1_step_4.side (Go to cart for checkout)
    Success: click css=.shopping_cart_link
Playing: sides/demo1_step_5.side (Click Checkout)
    Success: click css=.btn.btn_action.btn_medium.checkout_button
Playing: sides/demo1_step_6.side (Enter John as first name, Doe as last name, 11111 as zip code and click Continue)
    Success: type id=first-name
    Success: type id=last-name
    Success: type id=postal-code
    Success: click id=continue
Playing: sides/demo1_step_7.side (Click Finish)
    Success: click id=finish
Playing: sides/demo1_step_8.side (Click Back Home)
    Success: click css=.btn.btn_primary.btn_small[id='back-to-products']
Playing: sides/demo1_step_9.side (Log out)
    Success: click id=react-burger-menu-btn
    Success: click id=logout_sidebar_link
Done.

Demo #3: Playing *.side files using Playwright Async API

% uv run demo1_async.py
Playing (Async): sides/demo1_step_1.side (Go to the home of https://saucedemo.com)
    Success: open https://saucedemo.com
Playing (Async): sides/demo1_step_2.side (Log in)
    Success: open https://www.saucedemo.com/
    Success: type id=user-name
    Success: type id=password
    Success: click id=login-button
Playing (Async): sides/demo1_step_3.side (Add a backpack to the cart)
    Success: click id=add-to-cart-sauce-labs-backpack
Playing (Async): sides/demo1_step_4.side (Go to cart for checkout)
    Success: click css=.shopping_cart_link
Playing (Async): sides/demo1_step_5.side (Click Checkout)
    Success: click css=.btn.btn_action.btn_medium.checkout_button
Playing (Async): sides/demo1_step_6.side (Enter John as first name, Doe as last name, 11111 as zip code and click Continue)
    Success: type id=first-name
    Success: type id=last-name
    Success: type id=postal-code
    Success: click id=continue
Playing (Async): sides/demo1_step_7.side (Click Finish)
    Success: click id=finish
Playing (Async): sides/demo1_step_8.side (Click Back Home)
    Success: click css=.btn.btn_primary.btn_small[id='back-to-products']
Playing (Async): sides/demo1_step_9.side (Log out)
    Success: click id=react-burger-menu-btn
    Success: click id=logout_sidebar_link
Done.

Demo #4: Play *.side files using Selenium

>uv run demo1_sel_sync.py
Playing: sides/demo1_step_1.side (Go to the home of https://saucedemo.com)
    Success: open https://saucedemo.com
Playing: sides/demo1_step_2.side (Log in)
    Success: open https://www.saucedemo.com/
    Success: type id=user-name
    Success: type id=password
    Success: click id=login-button
Playing: sides/demo1_step_3.side (Add a backpack to the cart)
    Success: click id=add-to-cart-sauce-labs-backpack
Playing: sides/demo1_step_4.side (Go to cart for checkout)
    Success: click css=.shopping_cart_link
Playing: sides/demo1_step_5.side (Click Checkout)
    Success: click css=.btn.btn_action.btn_medium.checkout_button
Playing: sides/demo1_step_6.side (Enter John as first name, Doe as last name, 11111 as zip code and click Continue)
    Success: type id=first-name
    Success: type id=last-name
    Success: type id=postal-code
    Success: click id=continue
Playing: sides/demo1_step_7.side (Click Finish)
    Success: click id=finish
Playing: sides/demo1_step_8.side (Click Back Home)
    Success: click css=.btn.btn_primary.btn_small[id='back-to-products']
Playing: sides/demo1_step_9.side (Log out)
    Success: click id=react-burger-menu-btn
    Success: click id=logout_sidebar_link
Done.

Key Features

  • Zero-config Selectors: AI finds the best ID, CSS, or XPath for you automatically.
  • Cost Efficient: Use AI only for recording. Execution is 100% local and free.
  • Standard Format: Generates standard .side files compatible with the Selenium IDE.
  • Developer Friendly: Provides both Sync and Async Playwright APIs.
  • Extensible: Built with a modular structure to support Playwright and Selenium.

Prerequisites

  • Python 3.12+
  • OpenAI API Key (required only for the side-builder recording phase)

License

This project is licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

side_builder-0.1.0.tar.gz (46.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

side_builder-0.1.0-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file side_builder-0.1.0.tar.gz.

File metadata

  • Download URL: side_builder-0.1.0.tar.gz
  • Upload date:
  • Size: 46.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for side_builder-0.1.0.tar.gz
Algorithm Hash digest
SHA256 15681f7e907163a44d714f105791d46311f8cf538ab66690915540a7c670825b
MD5 3ce19aacd759ba8fce099e27093e5afe
BLAKE2b-256 ad89689303a568b2d720969f2b97d94dc1f5dcf2ddb84d00b5d269fa212f748f

See more details on using hashes here.

File details

Details for the file side_builder-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: side_builder-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for side_builder-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c39e5c4f32be38f17792105f2cd282c416f17c4fb4f172390eb5f595f22b65af
MD5 293ee33cd3cd608f980518bbfe69e8af
BLAKE2b-256 ee120c8b4730d0ccddb42626e57c756f7b018536db4f876c8086b4d558576792

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page