Giter Site home page Giter Site logo

parasol's People

Contributors

dalehenrich avatar jbrichau avatar mattonem avatar noha avatar pdebruic avatar rinzwind avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

parasol's Issues

Unexpected response status code 302 while creating web driver session.

In both Pharo 5 & 6.1 on Mac os x 10.36.6 I followed the instructions in the Readme and keep hitting the error in the subject. I have a fix here in a sec but the Session Id code from the 301/302 redirect wasn't working.

The response that causes the error has no body but the headers are:

a ZnHeaders('Cache-Control'->'no-cache' 'Connection'->'close' 'Date'->'Thu, 12 Jul 2018 18:22:01 GMT' 'Expires'->'Thu, 01 Jan 1970 00:00:00 GMT' 'Location'->'http://127.0.0.1:4444/wd/hub/session/1531355270093' 'Server'->'Jetty/5.1.x (Mac OS X/10.13.6 x86_64 java/1.8.0_31' )

The chromedriver version is 2.40.565386

The selenium standalone driver is selenium-server-standalone-3.13.0.jar

Loading parasol and seasidev3.4.7 loops forever

Hi

When trying to load seaside v3.4.7 and parasol I got an endless loop.
I do not really get why in addition the system forces to load Ston and zinc because they are already in the system.

Caching mechanism for drivers does not reset cookies

The class BPWebDriverTestCase caches and reuses BPRemoteWebDriver instances between tests, to prevent having to start the browser for every test. But the caching mechanism doesn't reset cookies, so they carry over from one test to another. The cookies should be cleared (or drivers in which cookies have been set should not be reused).

travis builds for Squeak-5.2 are failing with `MetacelloMCBaselineOfProjectSpec and MetacelloCypressBaselineProjectSpec are not compatible.` error

This particular problem has been fixed with Metacello/metacello#531, presumably Squeak-5.2 is not loading the latest version of Metacello when loading this project ... when and if the Squeak-5.2 image is updated to include the latest Metacello/Metacello commit, the test should start passing again ... see also SeasideSt/Seaside#1229, where Squeak-5.2 was added to the expected failure list - not sure whether Squeak-5.2 is being maintained for Seaside or not

KeyNotFound: key 'ELEMENT' not found in Dictionary

Running with selenium-server-standalone-3.141.59 and geckodriver-v0.23.0 any attempt to find an element results in the above exception.

I see from the W3 WebDriver spec that:

The web element identifier is the string constant "element-6066-11e4-a52e-4f735466cecf".

Which seems indeed to be what is returned in these cases, yet there are several methods that check for the string 'ELEMENT' instead.

POST /session/56...73/keys did not match a known command

Pharo5.0 (Latest update: #50761)

Metacello new
baseline: 'Parasol';
repository: 'github://SeasideSt/Parasol/repository';
load: 'tests'.

Parasol-Convenience (ThomasCleenewerck.16)
Parasol-Core (JohanBrichau.62)
Parasol-Pharo (JohanBrichau.13)
Parasol-Tests (JohanBrichau.34)

BPMiscTestCase debug: #'testPlatformIs'.

POST /session/56...73/keys did not match a known command
Build info: version: '3.0.1', revision: '1969d75', time: '2016-10-18 09:48:19 -0700'
System info: host: '...', ip: '...', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_111'
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{rotatable=false, raisesAccessibilityExceptions=false, firefoxOptions={args=[], profile=...=}, appBuildId=20161129173726, version=50.0.2, platform=XP, proxy={}, command_id=1, specificationLevel=0, acceptSslCerts=false, processId=2648, browserVersion=50.0.2, platformVersion=6.1, XULappId={...}, browserName=firefox, takesScreenshot=true, takesElementScreenshot=true, platformName=windows_nt}]
Session ID: 56...73

I see this command in https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol but not in https://www.w3.org/TR/webdriver/. Perhaps we should use https://www.w3.org/TR/webdriver/#element-send-keys.

Example code fail with latest version of Chrome

OS: MacOS
Pharo version: Pharo5.0 Latest update: #50772
Chrome version: Version 76.0.3809.87 (Official Build) (64-bit)
Chrome Driver version: ChromeDriver 76.0.3809.68

Problem:
When running the Wikipedia example code, it fails at the following line :-

(driver findElementByID: 'searchInput') click.

Error Message: "KeyNotFound: key 'ELEMENT' not found in Dictionary

Automated tests are not run for VisualWorks

The automated tests are currently not run for VisualWorks. I'm not sure whether Parasol still works on VisualWorks or not. I'm not aware of anyone actively using Parasol on VisualWorks.

I don't think smalltalkCI has support for VisualWorks.

Perhaps we should just remove support for VisualWorks (unless someone who wants to maintain the VisualWorks-support package speaks up).

waitUntil on BPSeasideWebDriverTestCase

Hi,

I have see two interesting functions :
BPSeasideWebDriverTestCase >> waitUntil:checkEvery:timeoutAfter:
BPSeasideWebDriverTestCase >> waitUntil:checkEvery:timeoutAfter:with:

Why don't move this on parent BPSeasideWebDriverTestCase ?

Fix setup for Pharo 11.0?

Hey, I wanted to try this out but when I evaluate this, I get a KeyError because of ZnZincServerAdaptor?

Metacello new
    baseline: 'Parasol';
    repository: 'github://SeasideSt/Parasol:master/repository';
    load: 'default'.
(Smalltalk at: #ZnZincServerAdaptor) startOn: 8080.

image

Infinite load loop involving Seaside and Parasol when reloading either project - GemStone only

There is definitely a Metacello project dependency loop between Seaside and Parasol ... Metacello checks for package dependency loops and not out and out project dependency loops --- a deficiency in Metatacello, but Metacello would simply produce an error, much better than infinite loop, but at the end of the day the loop must be broken ... for the purposes of this bug, I will fix the baseline and remove the Parasol to Seaside project dependency for GemStone only - since it is sufficient that Seaside loads Parasol.

BPPharoPlatform>>#handleRequest: contains commented-out code to strip NULL characters from the response

There's some code in the method BPPharoPlatform>>#handleRequest: to strip trailing NULL characters from the response:

"Carsten Haerle: Why is that necessary? Is it possible to have trailing zeros? Not not be necessary."
"contents := contents copyFrom:1 to: (contents findLast: [:c | c asInteger ~= 0 ])."

Either that can be removed, or it should be re-enabled again. Based on the change done in 83ad7f2, I would say it might still be necessary.

Links to the corresponding Java API documentation are broken

Some of the comments in methods that refer to the documentation of the corresponding Java API method use the old website, for example:

http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/remote/RemoteWebDriver.html#findElementByName(java.lang.String)

Fixing this seems to be just be a matter of replacing http://selenium.googlecode.com/svn/trunk/ by https://seleniumhq.github.io/selenium/, and replacing ( and ) by -. For the above example, the new URL is:

https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/RemoteWebDriver.html#findElementByName-java.lang.String-

Add support to set the default download path for chrome

Hi,

I have tried to manually set the default download path for chrome using a DesiredCapabilities object:

desiredDriverBrowserCapabilities
  ^ BPDesiredCapabilities chrome
"    setCapability: 'chromeOptions'  << also tried this"
    setCapability: 'goog:chromeOptions'
          to:
            (Dictionary new
                at: 'prefs'
                put:
                  (Dictionary new
                    at: 'download.default_directory'
                    put: '/tmp/testdownloads';
                    at: 'download.prompt_for_download'
                    put: false;
                    at: 'download.directory_upgrade'
                    put: true;
                    yourself);
          yourself);
    yourself

I could not get that to work. I suspect there are a lot of things related to the internals of WebDriver and chromedriver that I'd have to understand better.

If you trawl the web on the topic, you find a lot of references for setting this using the ChromeOptions object .

It would be super if such an object was available in Parasol or even if there was a bit of documentation for how to get this task done with what is available at present.

port to 3.6.0

It seems that at a minimum, the method CharacterCollection>>substrings: seems to be defined in 3 packages: Grease-GemStone-Core and Parasol-GemStone:

==================== Parasol-GemStone (-) --> image (+)  ====================
Item was removed:
- ----- Method: CharacterCollection>>substrings: (in category '*Parasol-GemStone') -----substrings: separators
-   ^ self subStrings: separators!

So not needed in Parasol ... may not be strictly related to 3.6.0, but I'm not finished yet:)

Parasol test framework has no support for dealing with random test failures

Since there is some random failure with tests it would be nice to let the user define a number of retry when a test fail. By default it would be 0 retry but the user could add a method numberOfRetry in his test class to enable it. Thus the CI would not fail randomly often.

I would like have other opinions about that.

endless loop when loading parasol before mdl (or voyage)

I load in my baseline Parasol, voyage, mdl (and other stuff).

I have noticed that I have to load mdl and voyage before parasol to avoid getting an endless loop

could be related with (but I do NOT use GemStone):
#43

I can fix the problem by changing order but I want to report it here.
With the following baseline the endless loop can be reproduced:

baseline: spec
	<baseline>
	spec
		for: #common
		do: [ spec blessing: #baseline.
			spec
				baseline: 'Parasol'
				with: [ spec
						loads: #('core');
						repository: 'github://SeasideSt/Parasol/repository' ].
			spec
				baseline: 'MaterialDesignLite'
				with: [ spec repository: 'github://DuneSt/MaterialDesignLite:v2.2.4/src' ] ]

Bildschirmfoto 2020-10-28 um 13 10 49

New versions of chromedriver seem pegged to specific Chrome versions

Newer versions of chromedriver seem to be pegged to specific Chrome versions. While v2.41 of chromedriver seems to allow using Chrome 75.0.3770.100; the newer v2.45 refuses to create a session, returning an error instead saying “Chrome version must be between 70 and 73”.

Implication: we may need to update chromedriver more often, or specify the version of Chrome to use in the “.travis.yml” file as well.

Support for checking running XMLHttpRequests

Feature request (Johan here, writing with Koen's account)

Scenario: running Seaside tests that perform jQuery ajax requests require to wait until the browser's running XMLHttpRequests are done. Having native support for this in Parasol would be helpful.

Error message from Selenium 4 may not be in W3C format, crashing Parasol when it occurs

Using Selenium 4, the error message that is returned may follow a different format than the W3C protocol. For example, the following can be returned when trying to delete a session that was already closed:

{
  "value": "\u002fsession\u002fc8f703018cf377e41f5a94584d3e4bab",
  "message": "Unable to execute request for an existing session: Unable to find session with ID: c8f703018cf377e41f5a94584d3e4bab\nBuild info: version: '4.1.2', revision: '9a5a329c5a'\n ......",
  "error": "org.openqa.selenium.NoSuchSessionException"
}

In W3C spec, the 'error' and 'message' attributes should have been nested inside the 'value' attribute. (see https://www.w3.org/TR/webdriver/#errors).

Since this crashes the error handling, a workaround in Parasol is needed. It is unclear to me why it occurs for now.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.