Debugging in Pharo 5 headless mode - smalltalk

I'm running pharo 5 (seaside) in headless mode, with RFB:
./pharo -vm-display-null -vm-sound-null /app/pharo5/Pharo5.0.image --no-quit
Locally works well (Ubuntu 14 with XFCE).
In DigitalOcean (Ubuntu 14 without GUI) it works until the debugger is activated: then it closes.
I can connect via VNC with no problem, but when I execute a Halt or an error it triggers the debugger, it leaves ... some clue of the problem?

This sounds like a case where remote debugging might be a reasonable approach. This project, PharmIDE, (previously name, "Remote Debugging", currently named "TelePharo") purports to provide debugging of remote images. There is a repository for it on Github under the current name.
*[Disclaimer, I have not used it.]

Related

Can I use the Remote Platform option in Netbeans from Windows 10?

I am trying to use my computer with windows 10 installed so that I can build and compile jar files but test them remotely on my raspberry pi4 down the hall. This method worked fine when I was using a linux (Ubuntu) laptop, but unfortunately...the laptop broke, and now I'm installing linux on another computer...and in the meantime, I would like to continue working. I have Apache Netbeans 12.3, java version 16, and here are the specifics of what is happening: I can go into manage platforms, I can set up a remote platform, and can test it...and the connection tests out successfully. However, when I go to File->ProjectProperties and select Categories->Run, in the drop-down box where you can usually select the platforms you have established....there are no options--it just offers Project Platform. Maybe it's a windows thing? A priviledge thing? I can't find the answer...thanks in advance.
This is the screen where the problem exists. The arrow points towards the drop down menu that won't drop down and acts like no other Platform has been defined.
By downgrading the JDK to JDK11, I was able to select newly existing Remote Platforms in Netbeans in the File->ProjectProperties window, under the Run category, as detailed in the picture above.

Blue Prism - Not able to spy elements - Browser Firefox

I have an issue with spy Browser mode in Firefox.
I have designed a new RPA process on Dev machine where I have spy in Browser mode (in firefox) web page.
On my Dev machine the Browser mode is working good and the process runs very good.
The issue is on production machine where the modeler don't see the elements which have been spied on dev machine.
Actions so far done.
We have set all settings regarding Firefox to the same like on dev machine using the BP guide,
We have installed the same Firefox extension on prod like on dev machine.
We have set the same internet options.
Non of the actions have helped us to be able to spy elements in Firefox on prod machine.
My questions to the experts community:)
What else could have impact on the BP - Browser mode which is stopping BP to see elements?
What virtual machine settings need to be set/or what to check?
We have BP Version 6:
Application Manager 6.4.2.10610
.Net Framework 4.7
Firefox version 72.0.2
Blue Prism Browser Extension version 6.4.2.10610vycoxormiz (updated 30. Jan. 2020)
Thank you for your help!
I found the solution.
During investigation I came on this link
[https://superuser.com/questions/719875/google-chrome-always-says-google-chrome-was-not-shut-down-properly][1]
In the location "%UserProfile%\AppData\Local\Google\Chrome\User Data\Default\Preferences
I have changed the "exit_type": "normal" to "exit_type": "standard" and immediate the
Browser mode on production machine was working and we could run the process.
It seems that the chrome when it wasn't shut down properly has impact on Blue Prism.
Adding update.
I have noticed that each time Chrome opens it changes in the Preferences file the status to Normal.
I have fixed the issue in that way, that I have added additional logic to my solution:
1. I have copied the Preferences file to a different location and changed in the file the status to Standard.
2. I have added additional logic to my process where bot copy the file from the new location and replace the file in the Chrome location each time he runs.
Hope this will help others with similar issue.
Regards!

Unable to run tests against Safari 11 remotely (ssh, CI)

I'm having troubles running Ruby/RSpec tests against Safari 11 when I'm trying to run tests via ssh manually or via Jenkins (where machine where Safari exists is remote slave).
When executing tests, I'm getting following error:
Selenium::WebDriver::Error::WebDriverError:
unable to connect to safaridriver 127.0.0.1:7050
What is weird is that I'm able to run tests when I'm logged to the Mac machine directly. This leads me to the conclusion that there could be some permission which, by default, disables execution from ssh session but not sure why?
Also, to my knowledge, Safari Driver is part of Safari 10+ and as such is not installed anymore as extension
Update: I've found out that safaridriver executable that should be spawned by tests cannot be spawned from some reason when I login via ssh.
Example:
/usr/bin/safaridriver -p 7050
It will just terminate with non-zero exit code while running same command directly on machine will run safaridriver in foreground. Since I expect Jenkins to be running test job on this machine, my idea to overcome this issue would be to launch safaridriver on this machine (by cron or launchctl) and then use this instance to connect to it with my tests. However, so far, I was not able to make my tests (Selenium/Capybara) re-use existing safaridriver instead of always trying to spawn new one on different port. Any idea on this would also be greatly appreciated.
This is my environment:
OS: MacOS Sierra 10.12.6
Browser: Safari 11.0.2
Thanks in advance
There is a possible workaround to do this. First you need to create a Automator Workflow or Apple Script that launches the SafariDriver
Then save this as a application. Let assume we name it SafariDriver7050.
Then from the SSH session you need to execute
open /Applications/SafariDriver7050.app
This will actually launch SafariDriver in the logged in session and it should work for you.
The caveat being shutting it down, you will need to first kill the SafariDriver7050 app and then you need to kill the safaridriver process. The order matters, else it will create a error dialog on UI
Edit-1:
As you suggested, it would be even easier to do this, when you wrap your test as a app and then it will be automatically be able to launch SafariDriver without any issues. The key to issue is using open command in a SSH session
Edit-2
Why does SafariDriver not work in SSH? Well if you look at the linux counterpart
In case of linux we can use the DISPLAY environment variable to launch an app in an existing display or we can use something like XVFB to launch the browser in a virtual display. That is the concept that most frameworks use in case of linux machines.
But Mac doesn't have such kind of feature, which is why this workaround is needed. Now why it doesn't have that, I am not sure. There may be some other workaround that I may not be aware of, so anyone who has valuable info, can help improve this part of the answer
For my case:
On OSX host side was created Automator app as described above and modified a little bit:
security unlock-keychain -p your_host_password /Users/$USER/Library/Keychains/login.keychain-db
safaridriver --enable
safaridriver -p 7050
On CCI/Jenkins side:
open /Applications/StartSafariDriver7050.app/
run pytest cmd
osascript -e 'quit app "StartSafariDriver7050"'
pkill safaridriver
In Python:
def safaridriver():
return webdriver.Safari(desired_capabilities=Caps.SAFARI, port=7050)

How to force compatibility view

I have IE 11 installed, but I need to run a few tests in IE 8, 9, & 10 as well. How can I force the compatibility mode when running a test.
FYI, I did try F12, and set the mode to 8. It works manually, but not through selenium.
Thanks!
I ran into exact same issue recently. Unfortunately, there is no way unless you change page source. See this. However, I can tell you what I have done. I used VMS of course. Luckily, microsoft also provides trial versions of VMS with different versions of IE. visit this. After getting the VMs ready I installed NUNit Console. I then simply copied and loaded the test dll on that and just run.

Managing selenium grids/nodes

Currently we are running the selenium grid on a Windows 7 vm and we have about 10 other win 7 vms for the nodes. We periodically run into some problems where the node stops working and just needs to be restarted. We also would like a periodic restart. I am curious how others are managing/ monitoring the nodes to see when something fails. Not sure if there is a way to monitor with something like Nagios?
I thought for restarting that I could try to build the node jar as a reservice and just have a schedule to reboot it once a month. Thoughts? Do I need to elaborate some more? Thanks
You can try selenium-grid-extras. Its been open sourced by groupon, I believe. From their git hub page:
This project is designed to help you manage your Selenium Grid installation by giving you control over the Grid Hub machine and Grid Node machine. This is very useful in cases when Internet Explorer Driver crashes, and you need to kill the iedriver.exe so that next test can start and not fail.
Link to the page - https://github.com/groupon/Selenium-Grid-Extras