Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 2 years ago.
Improve this question
I am looking at creating automation test cases for a VueJS application that will be supported across several different desktop browsers and mobile (iOS and Android) browsers. I have came across several options including Protractor, Test Cafe, Nightwatch, and Cypress. Cypress is only supported with Chrome browsers so I won't be able to use that, and Protractor seems more geared towards testing of Angular applications. So I am looking for feedback from people who have used Test Cafe or Nightwatch.
Questions:
Which of the 2 tools do you find better and why?
What are the pros/cons of one vs. the other? (Selenium Based vs. Not doesn't matter to me)
Does either support mobile browser testing?
Did anyone have any issues with either that stopped you from using it and going with another approach?
I have not used test cafe till now but I have used Nightwatch. It's really a nice framework developed in nodeJS.
Pros:
List item
Built-in test runner- Built-in command line test runner which can run the tests in parallel.
Parallel cross-browser testing- Same test we can run in multiple browsers at the same time
Much better api then selenium webdriver
Inbuilt assertion library
Inbuilt screenshots
Return object- Every method that you call will return an object. We can have a chain of command like open.click.sendkeys.wait.click.select.end
Syntax- looks the easiest and the most readable
It has a very good inbuilt debugging mechanism.
It is extendable- You can write your own custom commands and add custom assertions
10.Grouping tests- You can group test. eg Smoke test, login test etc
It is also supported across several different desktop browsers and mobile browsers (iOS and Android)
Cons: less support
I had experiance with nightwatch js . Its very easy to implement.Its suport all languages like react js, angular js or any scripting language. Only the neagtive side is less support. Another better option is webdriver.io (not selenium webdriver)
Nightwatch is based on selenium. Test Cafe has his own mechanism and have some advantages, like mobile testing and auto waiting mechanism and simpler setup.
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed last year.
Improve this question
I am job searching and am seeing a lot of Selenium requirements in job descriptions lately. I know that Selenium is an automation tool for web testing but what I don't know is how it compares to using AutoIt and Sikuli. I am very familiar with AutoIt and Sikuli tools but not familiar with Selenium as far as enterprise use. I could simply download Selenium and fool around with it but as far as professional experience, I have none.
So my question to automation professionals out there is if I have a good deal of experience in AutoIt and Sikuli, would I be a good fit for a position that deals solely with Selenium?
Have experience only with AutoIt and Selenium .
What I can say about AutoIt -> script written on it are suitable for WIN platform only.
Imagine the situation when you need to run you test (that covers a piece of functionality on a web page) on 2 notes: win note and macBook.
For Win your script be working OK , for Mac it will fail.
OR, a little bit modified: if you need run your script simultaneously on several machines and/or in several browsers. Selenium will fit OK for this.
But for another side: such case like attachment a file on a webPage or any other kinda of attachment - will not work with pure Selenium. AutoIt will handle it nice.
So it was 2 little casees in particular.
In overall, selenium is used for functional UI automation of web application(-s) . And if you have experience of scripting you will be able to adjust your skills.
My recommendation to you - start recording script with SElenium IDE , then export these recorded scripts in testNg , and then try to understand their structure.
Good luck! :)
As someone who has fairly extensive experience with Sikuli and Selenium (but none at all with Autolt), I would say that Sikuli skills are not very transferable to Selenium. The theory side--the logic and algorithmic thinking you'd use to problem solve would be much the same, but the technique of execution are so very different between the two, that if I were doing the hiring, I wouldn't hire a person with no experience in Selenium but vast experience in Sikuli, if there were any reasonable Selemium-experienced people to choose from.
I imagine, though, that if you could demonstrate proficiency, or create and show your own projects that use an array of Selenium skills, that could go a long way to smoothing reservations a hiring company might have...
Take that for what it's worth, esp since I have no experience with Autolt.
Selenium is used for Web-Automation or Web Applications or website related automation.
Autoit can only be used for Windows GUI Automation or Windows based applications. No Image Recognition purely on elements based usage.
Sikuli on the other hand, can be used for automating both i.e. Desktop Apps and Web-Apps. It basically finds the match of the given Image in the screen by using Image Recognition and then you can perform tasks on that like click, double click, input text etc.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 months ago.
Improve this question
I am currently setting up a development environment for my new project and I am thinking hard about one thing. I plan on using Yii. I want to have functional tests automated, I already have gerrit and Jenkins in place, working.
I read this note and found out that selenium has something like html suite. I never heard of it before, I always wrote my tests to be run via PHPUnit. I used default Yii functional tests environment as described here.
So my question is, what are pros and cons of both approaches? I already can think of one pro and con of html suite. Pro is, that writing tests is really easy - you just "click" them in Selenium IDE. The con is, that I probably would have to run db fixtures before testing and I couldn't change them, or run them like - load fixtures, run test, load fixture, run test, but I guess that would be make the tests much sloppier. What do you think/what is your experience in that matter?
there is an easy way to write functional tests.
you can downlaod an addon for selenium IDE and then add the php formatter for this addon, and you can make and export functional tests very eeeasy.
then you should configure your protected/config/test.php and protected/tests/bootstrap.php
you should probably edit protected/tests/phpunit.xml and remove any browser, other than fire fox.
then do like Willem Renzema said and change the test made by this addon and change the name of the class to WebTestCase and remove the setUp()
then you are ready to run tests!
cheers
The two packages that are well integrated with Yii, is PhPUnit and Selenium Remote Control. So these two are more common between Yii developers.
Regarding, deploying functional test, I'm not sure how deep you want to go, but as far as I used it, it was pretty easy. Functional tests, are literally php classes, which are extended from CWebTestCase.
Yii CWebTestCase class description
Naming convention is you have to name you class ending with Test like ExampleTest.php, and store the files under protected/tests/functional. You need to set up everything including, both packages and also changing Yii configuration file and your default browser. If everything goes well, a sample test can be like this:
class ExampleTest extends WebTestCase
{
public function testContact()
{
$this->open('?r=site/contact');
$this->assertTextPresent('A string on contact page');
$this->assertElementPresent('name=ContactForm[name]');
$this->type('name=ContactForm[name]','tester');
$this->type('name=ContactForm[email]','tester#example.com');
$this->type('name=ContactForm[subject]','test subject');
$this->click("//input[#value='Submit']");
$this->waitForTextPresent('Body cannot be blank.');
}
}
That's all I knew about it and I hope it helped.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
we are just trying to evaluate which one is best - Selenium or Eggplant
Selenium is of course free of cost. The following are some problems we faced:
1. click actually requires focus on the page. so when a test case is running we just have to see the selenium running. Any click by the user, for example if i want the test case to run in background, then i can't do that. I dont know how fireEvent() method will help in this case.
Our application has many form and any click or value change or focus on any element reloads(through ajax) some component on the webpage. So the page is fully ajax driven. So we were getting many Stalereference exceptions when using selenium. We handled this with using our own wrappers on top of webelement which handles such exceptions.
Will eggplant be a better alternative?
The Automation tools have to have the browser open to truly do the automation tests. It's an actual representation of what the end-user would do (clicks, changing URL, clicking browser [BACK]/[FORWARD] buttons, key-presses, etc..), so it must launch an instance of the browser. Selenium IDE can only run in Mozilla Firefox, but if you set up Selenium Remote Control server, and choose a client (NUnit using .NET, JUnit using Java, etc..) and launch your browser from Visual Studio (using NUnit) or from Eclipse (using JUnit), then you can test your script in multiple browsers. They also have Web Driver which is a newer way architecture than Selenium RC (Remote Control).
I've never used Eggplant, so I can't criticize on it.
As for the things you had issues with during your proof of concept, I can help you with those. Selenium is actually JavaScript running on top of any JavaScript running on your page (ie: AJAX in your case), so it will work fine for those situations. Can you describe the behavior of the StaleReference Exceptions?
I am using Selenium and Webdriver. In ChromeDriver, the browser can actually run in background (verified by myself :) )
So I would suggest Selenium - and moreover, you can find support here ;)
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I have looked at the rather long list of testing frameworks at https://github.com/ry/node/wiki/modules#testing. What is the experience with these frameworks?
Obviously the ability to run in the browser would be a big bonus, but I'm mainly interested in Node.js. Something with a heavily asynchronous slant would be great.
Update:
Mocha is the best in my opinion.
What is the experience with these frameworks?
I played with expresso which is pretty cool testing framework which also has test-coverage. It has been created by TJ Holowaychuk who is also the creator of Express.js (insanely fast (and small) server-side JavaScript web development framework built on Node.js and Connect). I recently saw that he also has a cool library called should.js which can be used together with Expresso for a even better testing experience.
Obviously, the ability to run in the
browser would be a big bonus
I don't believe it can run in the browser, but I also don't get why you would want to run it inside the browser?
but I'm mainly interested in Node.js.
Something with a heavily asynchronous
slant would be great.
Quote from the expresso:
The argument passed to each callback
is beforeExit, which is typically used
to assert that callbacks have been
invoked.
You can use beforeExit to test asynchronous functions.
TIP: Follow TJ Holowaychuk on GitHub, because he creates very good open-source code.
I use VowsJS which is easy to use async BDD framework (Behaviour Driven Development) and get the job done.
From what I see lately it's what many chose to test their NPM modules, so I believe so far it's one the best to use.
Some popular testing frameworks that could be used with NodeJS are also those:
Mocha
Jasmine
Expresso (no longer maintained)
Should
NodeUnit
jsUnit
You can also see a list of JavaScript test frameworks here
Few more libs that could help you write better code are those:
ReadyJS watches your js files and test them with JSHint
Concrete small continuous integration server
Jezebel continuous testing for Jasmine
Nosey not quite there but have a nice roadmap so I keep an eye on it
There is also Bamboo CI Server by Atlassian it automates builds and tests. It is a package for Apache/Tomcat (which sux because it uses Java and that makes it very heavy) also is not free but it has a starter license which costs $10 so I believe it is affordable. It is the most featured of all CI servers I found so far and it supports all unit tests that support xUnit that means that you can run builds/tests for any language with Bamboo.
Another option for CI with NodeJS is Travis which lot of people use for their open source projects, as it says A hosted continuous integration service for the open source community.
There is also a google group discussion with Continuous Integration for Node JS Projects topic.
Based on the asker's comments above, I tried out vows, and it solved a lot of problems I was having with my async testing. Its ability to mix serial and parallel testing is awesome.
Make sure you read the guidance doc carefully, but once you get the hang of it, it's flexible, powerful, and produces nice, clean results.
UPDATE: I would also encourage people to check out should for their asserts. It allows for very flexible, very readable asserts, and is compatible with both Expresso and Vows, and probably most other test frameworks as well.
(I'm posting this as a separate answer just in case people don't notice the comments on Alfred's answer.)
UPDATE 1/7/2015: For what it's worth, I have since switched from Vows to Mocha, and from Should to Chai. Mocha has much better support now for asynchronous tests using promises, and Chai allows for several flexible assert options, including the expect api, for those who don't like to modify the object prototype.
I've started using Jasmine for my JavaScript testing specifically because it's small and runs in both the browser and node. It's also got a really solid reporting and matcher API so it's easy to integrate with other tools in the future. Having a buildin mocking framework is also useful since it's often one of the first things I would add when I was using qunit for TDD in the browser.
If you want a true BDD framework then maybe consider Yadda. It integrates with mocha, jasmine, nodeunit, qunit, zombie and casperjs, to support feature files, e.g.
Scenario: provides the version of all services
given service x is running
and service y is running
when I request the service versions
then service x should be version 0.0.1
and service y should be version 0.0.2
I've been using nodeunit and its ability to work with async functions is reasonably straightforward.
There's a nice walkthrough that should get you ready-to-go with nodeunit on his blog.
[ Note: the API has changed since the blogpost – setUp(callback) and tearDown(callback) both take a callback as an argument, which you need to call when your setup/teardown is complete. ]
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
What do you recommend for testing purposes in Java environment (Selenium or Rational Functional Tester)? Could you write some pros and cons? I heard about MicroFocus TestPartner, do you have experience with it?
Both automated test tools offer some of the basic capabilities of automation. However there is a massive difference between Rational Functional Tester (RFT) and Selenium. IF your aim is basic testing, where the outcome is short term -1-3 months and you don't mind that the scripts will need a high level of maintenance, then Selenium is fine. RFT provides a number of critical differences from Selenium that impact your ability to have a long term automation solution. These are:
RFT uses an object map between the script and the application under test. This means that as the application changes you don’t need to find and replace object properties in the scripts. This will save you a lot of time
RFT uses datapools for driving large datasets into a test. this allows permutations and combinations to be created.
RFT has very powerful connectors to multiple application styles like SAP, Siebel, Oracle, VB, PowerBuilder, various web and terminal server functions. This means one tool for every situation where selenium provides only one solution.
RFT works with RQM for full end to end test management.
The net result of all this is time and longevity of the automation. I would not choose Selenium for a long term solution because RFT will cost substantially less in maintenance than RFT ever will - even for a novice.
Please clarify 'Java environment'.
If Java environment == a web based application delivered through a browser, then you have tons of choices at your disposal, not just Selenium, Rational Functional Tester and TestPartner. There are a number of open source and commercial tools for testing web apps.
If, however, Java environment == standalone Java application, that runs on your desktop, then your choices are more limited. Selenium will not work, as Selenium only supports browser-based web apps. Functional Tester and TestPartner are both good tools, I have worked extensively with both, and both support the Java platform. There are other tools, such as HP QuickTest Pro, and there are probably some Java-specific open source tools.
I'd recommend mixing the two: When there are things that you cannot do in RFT, you can get help from Selenium, which is simply a Java API which can be used in RFT. Writing cross-browser script can be a good point to use this mixed approach.
One more point to consider is: Selenium is a free and open source tool.
Another point is: Selenium has a much more activity in its discussion forums. Its is more likely to get a faster answer from other users of Selenium.
Since you mentioned TestPartner which is a commercial tool.
QTP and TestPartner have a comparable pricing level. So you should consider other important factors: integrity of the tool, learning curve, level and quality of commercial support, level of community support.
You may also want to look at TestComplete, which is also very powerful, and incorporates support for Load Testing, and Unit Testing, but has significantly lower price.
Generally, I would say, automation success is much more dependant on automation skills of a person rather than on capacities of a specific tool.
Thank you,
Albert Gareev
http://automation-beyond.com/
Take a look at TestMaker by PushToTest.com . It's written in Java and runs Java and Selenium scripts as well as soapUI, Groovy, Ruby, Python, PHP, VB and .Net. TestMaker allows you to take the Selenium scripts and run them as automated regression tests, load or performance tests and production SLA monitoring scripts without having to write the tests in multiple languages or for multiple tools. You can also run them in clouds such as EC2, GoGrid, Rackspace and CollabNet.
There is a free community version and a commercial Enterprise Version. When you purchase the Enterprise version, you get support for the tools including support on Selenium. You can download TestMaker from the website.
If you're not sure, there are free webinars several times a month on how to get the most out of the latest proven Open Source Testing tools. Definitely worth checking out.
If you are targeting only web based application with UI having HTML , we can use selenium.
If you want to use commerical tool you can go ahead with RFT and it supports different UI interfaces when compared to selenium