{"id":13772724,"url":"https://github.com/SeasideSt/Parasol","last_synced_at":"2025-05-11T05:33:29.055Z","repository":{"id":7953870,"uuid":"56960990","full_name":"SeasideSt/Parasol","owner":"SeasideSt","description":"Testing web apps in Smalltalk using Selenium WebDriver.","archived":false,"fork":false,"pushed_at":"2025-04-21T07:20:27.000Z","size":583,"stargazers_count":32,"open_issues_count":11,"forks_count":17,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-04-21T08:30:35.101Z","etag":null,"topics":["gemstone","pharo","pharo-smalltalk","smalltalk"],"latest_commit_sha":null,"homepage":null,"language":"Smalltalk","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SeasideSt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-04-24T08:05:53.000Z","updated_at":"2025-04-21T07:20:31.000Z","dependencies_parsed_at":"2023-02-12T11:01:08.206Z","dependency_job_id":"3b1815f1-989e-4375-bd81-a4a7e14a3722","html_url":"https://github.com/SeasideSt/Parasol","commit_stats":{"total_commits":293,"total_committers":8,"mean_commits":36.625,"dds":0.5597269624573379,"last_synced_commit":"778672cc912ead997d386b3b219c04d61f5b03fc"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeasideSt%2FParasol","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeasideSt%2FParasol/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeasideSt%2FParasol/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeasideSt%2FParasol/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SeasideSt","download_url":"https://codeload.github.com/SeasideSt/Parasol/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253523690,"owners_count":21921815,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gemstone","pharo","pharo-smalltalk","smalltalk"],"created_at":"2024-08-03T17:01:07.218Z","updated_at":"2025-05-11T05:33:28.632Z","avatar_url":"https://github.com/SeasideSt.png","language":"Smalltalk","funding_links":[],"categories":["Web"],"sub_categories":[],"readme":"# Parasol\n\nParasol (full name “Beach Parasol”) is a Smalltalk framework to automate web browsers. It’s particularly useful to write automated tests for [Seaside](https://github.com/SeasideSt/Seaside) web applications. Its design and implementation are based on the [Java Selenium WebDriver API](http://www.seleniumhq.org/projects/webdriver/). \n\n\n## Example\n\nHere’s a straightforward annotated example. This example uses Parasol to automate a search for “Pharo” on Wikipedia:\n\n```Smalltalk\n\"Open a web browser on the English-language Wikipedia home page.\"\ndriver := BPRemoteWebDriver withCapabilities: BPChromeOptions new.\ndriver get: 'http://en.wikipedia.org/'.\n\n\"Click on the search box and type in 'Pharo' followed by a press of the Return key.\"\n(driver findElementByID: 'searchInput') click.\ndriver getKeyboard sendKeys: ('Pharo' , (String with: BPKeys return)).\n\n\"Get the text of the article's first paragraph and show it on the transcript.\"\nTranscript show: ((driver findElementByID: 'mw-content-text') findElementByCSSSelector: 'p:not(.mw-empty-elt)') getText.\n\n\"Tell the browser to quit.\"\ndriver quit.\n```\n\nCheck the Hands-On section below to learn how to run the example yourself.\n\n\n## Introduction Video\n\nOn YouTube you can find an [introduction video about Beach Parasol](https://www.youtube.com/watch?v=CoJ-Wnno6TY). The video is a recording of a talk that was given at the ESUG 2013 conference. The slides of this talk are also available on [SlideShare](https://www.slideshare.net/esug/4-beach-parasol-presentation) and as a [PDF](http://esug.org/data/ESUG2013/1-Mon/04-Beach%20Parasol%20Presentation.pdf).\n\n\n## Hands-On\n\nTo try Beach Parasol, you'll need to get a few things:\n\n- A [Pharo](http://pharo.org) image\n- The [Chrome](https://www.google.com/chrome/) web browser\n- The [Selenium standalone server](http://docs.seleniumhq.org/download/) JAR file\n- The [Chromedriver](https://chromedriver.chromium.org/) for your operating system and matching Chrome version\n\nWe run [automated tests](https://github.com/SeasideSt/Parasol/actions) for the [supported platforms](https://github.com/SeasideSt/Parasol#supported-smalltalk-platforms). If you find things are not working with more recent versions, please do [file an issue](https://github.com/SeasideSt/Parasol/issues).\n\nYou should extract the Chromedriver's ZIP file into the directory where you put the Selenium server JAR file. To run the Selenium server, execute the following on the command line:\n\n```bash\njava -Dwebdriver.chrome.driver=chromedriver -jar selenium-server-4.13.0.jar standalone\n```\n## Loading Parasol\n\n**Warning**: Parasol's default baseline will *NOT* load [Seaside](https://github.com/SeasideSt/Seaside) automatically. You can therefore use Parasol without Seaside, but then you should only load the 'core' Metacello group. The 'default' Metacello group pulls in the extensions for Seaside but you are required to load Seaside yourself. This ensures you can load your own version of Seaside without tackling Metacello load conflicts. Only the 'tests' Metacello group will load latest master of Seaside.\n\nTo load Parasol into a Pharo image with the Seaside extensions:\n\n```Smalltalk\nMetacello new\n    baseline: 'Parasol';\n    repository: 'github://SeasideSt/Parasol:master/repository';\n    load: 'default'.\n(Smalltalk at: #ZnZincServerAdaptor) startOn: 8080.\n```\n\nTo load Parasol into a Pharo image _and_ pull in Seaside as well:\n\n```Smalltalk\nMetacello new\n    baseline: 'Parasol';\n    repository: 'github://SeasideSt/Parasol:master/repository';\n    load: 'tests'.\n(Smalltalk at: #ZnZincServerAdaptor) startOn: 8080.\n```\n\n\n\nNow give the Wikipedia example from above a try! For more examples, check the test cases `BPRemoteWebDriverTestCase` and `BPWebElementTestCase`.\n\n\n## Documentation\n\nIf you need more documentation, you can check the [documentation of Parasol’s Java counterpart](http://seleniumhq.github.io/selenium/docs/api/java/). Most classes and methods in Parasol were designed to closely follow their Java counterpart, to make it easier to use its documentation and translate from Java-based examples. Good starting points are the documentation for the [WebDriver](http://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebDriver.html) and [WebElement](http://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebElement.html) interfaces. They are the counterparts to `BPRemoteWebDriver` and `BPWebElement`.\n\nThe [Seaside tutorial offered by the HPI Software Architecture Group](http://www.hpi.uni-potsdam.de/hirschfeld/seaside/tutorial) has a chapter on “Testing Seaside Applications” using Parasol.\n\n## Supported Smalltalk Platforms\n\nThe main Smalltalk platforms for Parasol is [Pharo](http://pharo.org) and [GemStone](https://gemtalksystems.com/products/). There was support for [VisualWorks](http://www.cincomsmalltalk.com/main/products/visualworks/) in the past, but this has been removed due to lack of maintenance (see [issue #8](https://github.com/SeasideSt/Parasol/issues/8), let us know if you’re interested in VisualWorks support). Support for [Squeak](http://squeak.org) is currently unmaintained but we accept PRs that fix the Squeak issues.\n\n\n## GitHub versus SS3 Repository\n\nAn [older repository for Parasol exists on SqueakSource3](http://ss3.gemstone.com/ss/Parasol.html). This [GitHub repository](https://github.com/SeasideSt/Parasol) is the current development repository, the older SqueakSource3 repository is no longer kept up-to-date.\n\n\n## Build Status ![Build Status](https://github.com/SeasideSt/Parasol/actions/workflows/ci.yml/badge.svg?branch=master)\n\nParasol’s self-tests are automatically ran using [Github actions](https://github.com/SeasideSt/Parasol/actions/workflows/ci.yml), the image above shows the status of the latest build of the “master” branch. Please note there's an open issue regarding some of the self-tests failing randomly ([issue #2](https://github.com/SeasideSt/Parasol/issues/2)).\n\n## Related\n\nYou might also be interested in:\n\n- [browserstack-local-smalltalk](https://github.com/mattonem/browserstack-local-smalltalk): running your tests with Parasol against [BrowserStack](https://www.browserstack.com/)\n- [AutomaticParasol](https://github.com/nymch/AutomaticParasol): for running SeleniumIDE-Generated Tests in Pharo Smalltalk (using Parasol).\n- [WebDriver](http://smalltalkhub.com/#!/~TorstenBergmann/WebDriver): alternative Pharo WebDriver package described as “based on Parasol but clean room and for Pharo only.”\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSeasideSt%2FParasol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSeasideSt%2FParasol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSeasideSt%2FParasol/lists"}