I would like to run my karate tests using the chromedriver and chrome present in a docker container. How can this be achieved ? I could only find the documentation on the native version of chrome here
We only support chrome native via Docker. Note that you can use existing Selenium "Grid" infra, for e.g see these:
https://github.com/ptrthomas/karate-devicefarm-demo
https://stackoverflow.com/a/60992292/143475
You can consider creating your own Docker image (which is very common) or use an existing "Selenium flavored" one. Do note that Karate is open-source. Maybe you would be interested to contribute this Docker container :)
Related
I've been using wp-env for a while now for running local WordPress environments for development on my Mac. With the introduction of Monterey, Apple removed PHP from MacOS. There are a couple of ways I can think of to handle this situation. Many people seem to be using Homebrew and MAMP. However, I'd prefer not to have to use Homebrew, both because of past personal experience, but also because going down this path seems to create a whole other mess for how to handle PHP and Composer (see, for example, Using PHPCS with Homebrew On MacOS Monterey).
So, my thought was, maybe I can just start doing development inside of the docker container. The questions then:
how do I extend the wp-env npm module to add things by default to the docker container, without modifying the wp-env source? i.e., does docker have some sort of config I can write that will run wp-env and then add some other stuff to the image? (e.g., npm, git, eslint, etc... so that the docker container itself becomes a development environment).
as I'm actually writing this question, does it even make sense to do it this way? I've found hints that a few people are doing it this way (e.g., a commenter on Using Docker in development the right way talked about his setup where he has vim/tmux/vscode/zsh configuration and shortcuts baked in, and recommends running all services as dockers inside that volume (which he claims is a huge performance increase over host bind mount). Unfortunately, he linked to a git repo that either no longer exists or is at least no longer public.)
While I cannot assist you specifically with wp-env I would recommend using DDev https://ddev.readthedocs.io/en/stable/ As you will basically have the freedom of choosing custom PHP environments, plus it comes with pre defined configurations to use specific stacks e.g. Laravel, WordPress, Drupal, and is dead simple to use.
I understand you might like to continue with wp-env but maybe this will help you out.
Looking out for steps to configure microsoft edge based on chromium to launch robotframework script using python.
Well, you just need to search for a bit and you'd find that you need a webdriver, which will take you to this Microsoft site with webdrivers for Edge.
When you have the driver and everything is set up, you can open Edge browser using Open Browser keyword.
From the previous comments i figured that you have installed the edge driver and you are not able to find open browser command. Here is the Solution
Install Selenium library using command
pip install robotframework-seleniumlibrary
pip install -U selenium
Import them
Then you will easily find the command Open Browser!
Let me know if it Helps!
I've just created a feature for our application which generates a powerpoint report from the data a given user has in our system.
In short, the server spawns an instance of google chrome using Selenium's ChromeDriver, and from there scrapes out the charts from our application running in chrome. It was done this way to ensure the charts in the report look exactly the same as they appear in the clients' browsers.
We use Azure Web Apps to host our development and production environments, and while my reporting feature works fine in local environments, it doesn't work once deployed to any other environments, because it depends on chrome being installed, and I can't get it installed in the Azure Web App sandboxed environment.
(you can see this other question of mine for a bit of a reference to where things are going wrong: PowerShell StartProcess: invalid handle )
SO
What I pretty much want to know is, if an Azure Web App environment isn't going to allow me to install google chrome, where should I look next?
It looks like using Service Fabric may allow me to install what I need appropriately (https://learn.microsoft.com/en-us/azure/app-service/choose-web-site-cloud-service-vm), but it seems like a big change to make just to be able to facilitate this small part of the feature.
Another option is to just re-architect the feature so it doesn't depend on the server spawning an instance of google chrome.. but I'd just prefer to avoid that if there's a straightforward way for me to get what I have working.
Ideally, there'd just be a way to get google chrome installed in the given environment, but I've spent a good 10 hours trying to get that to happen now, and it's not looking promising.
There's a couple of solutions which would work - depending on your code and framework dependencies.
IMO - the simplest way would be to build your code in a docker container (that runs the Selenium ChromeDriver) and deploy it either through the container features on Web Apps or run it on demand through ACI (Azure container instances) and have it create the report and drop it in Azure Storage. In a container you have a lot more options - and you have a great amount of options on how to run it. Spinning up an ACI on-demand to do the job can be done in multiple ways (e.g. from Code or through logic-apps or Powershell/Azure automation).
Here are some links on running containers in your App Service:
https://learn.microsoft.com/en-us/azure/app-service/containers/
https://learn.microsoft.com/en-us/azure/app-service/containers/tutorial-custom-docker-image
You could start off by building and adding your code from this image: https://github.com/SeleniumHQ/docker-selenium
Other alternatives of course - you could have a VM that you can install and do what you want with on-demand - however - it'd add more management overhead and other implications to think about.
Many options - but in the regual Web App Sandbox - you're limited.
I have found myself this problem with chromedriver.exe needing a real Chrome. As I cannot install Chrome in Azure App Service I am trying a portable version of Chrome. When using the chrome webdriver I tell it where to find the chrome binary.
var options = new ChromeOptions();
options.AddArguments("headless"); // any options you need
options.BinaryLocation = "YOUR CHROME BINARY PATH HERE";
var driver = new ChromeDriver("YOUR CHROME DRIVER PATH HERE", options);
You should be able to copy the chrome portable files as no installation is required. Although it is heavy, 250 MB, because it includes the non portable version inside.
Be sure to use a Chrome version compatible with your ChromeDriver as pointed in the documentation
I'm trying to pull microsoft/aspnet image. It tries to download something and shows the progress. But then it shows an error - "Unknown blob".
How I can solve this?
P.S. I have docker client and server v1.12.2
Your docker version is 1.12.2 which does not supports Windows Containers, which means you are running Linux Containers in the VM. And you are pulling a Windows container based image so either update your docker to the 1.13.0 beta version which supports Windows Containers and pull this image or find a linux based image of .Net.
To see how to switch to Windows Containers, see this GIF
You must download and install latest docker from here
and switch to windows container.
read more
The problem is not Windows/Linux cross compatibility. A Linux client can pull Windows images, though it cannot actually launch them.
The issue 'unknown blob' is most likely image corruption. Refer to other answer that mentioned that your image name is deprecated.
You're trying to download a windows image to a Linux host.
I'm assuming you're running the docker host within a Linux VM.
If you have access to Windows Server 2016 use that.
try
docker pull microsoft/aspnetcore
Microsoft changed the names of their Docker Hub Repos in the last months so it is not so easy to find the right ones.
I want to use gitLab-CI for a Qt-project, but i can't figure out, what I need to do so. I understand, that the whole pipeline process takes place on the CI-Server, but how do I setup the needed requirements like the qt-environment?
Solution:
Ok now I got it! You just use the Runner for it, if you do not have a Server, you can use a VM.
For GitLab.com
The runners are already set up (shared runners).
You need to use a Qt SDK Docker image or install it yourself:
Use image: <image-name> for .gitlab-ci.yml
Use apt or some other package manager (not recommended)
Once you got a Qt SDK environment set up inside .gitlab-ci.yml, make sure to add a command to build/compile/run/test it.
For non-GitLab.com
The runners may or may not be set up, but you do not need to do any specific changes (other than using faster machines with bigger memory, etc for building in necessary).
You need to use a Qt SDK Docker image or install it yourself:
Use image: <image-name> for .gitlab-ci.yml
Use apt or some other package manager (not recommended)
Once you got a Qt SDK environment set up inside .gitlab-ci.yml, make sure to add a command to build/compile/run/test it.
Other Helpful Comments
This is from Josh Peak's comment:
Ok that answers my question. I'm going to have to preconfigure a VM image and/or a Docker image with the QT SDK that the rest of my dev team can leverage. Thanks for the quick response.
This answer is from ManuelP.'s question:
Ok now I got it! You just use the Runner for it, if you do not have a Server, you can use a VM.