Alternatives to PhantomJS logo

Alternatives to PhantomJS

Selenium, Electron, Protractor, wkhtmltopdf, and SlimerJS are the most popular alternatives and competitors to PhantomJS.
834
411
+ 1
18

What is PhantomJS and what are its top alternatives?

PhantomJS is a headless WebKit scriptable with JavaScript. It is used by hundreds of developers and dozens of organizations for web-related development workflow.
PhantomJS is a tool in the Headless Browsers category of a tech stack.
PhantomJS is an open source tool with 28.9K GitHub stars and 5.8K GitHub forks. Here’s a link to PhantomJS's open source repository on GitHub

Top Alternatives to PhantomJS

  • Selenium
    Selenium

    Selenium automates browsers. That's it! What you do with that power is entirely up to you. Primarily, it is for automating web applications for testing purposes, but is certainly not limited to just that. Boring web-based administration tasks can (and should!) also be automated as well. ...

  • Electron
    Electron

    With Electron, creating a desktop application for your company or idea is easy. Initially developed for GitHub's Atom editor, Electron has since been used to create applications by companies like Microsoft, Facebook, Slack, and Docker. The Electron framework lets you write cross-platform desktop applications using JavaScript, HTML and CSS. It is based on io.js and Chromium and is used in the Atom editor. ...

  • Protractor
    Protractor

    Protractor is an end-to-end test framework for Angular and AngularJS applications. Protractor runs tests against your application running in a real browser, interacting with it as a user would. ...

  • wkhtmltopdf
    wkhtmltopdf

    wkhtmltopdf and wkhtmltoimage are command line tools to render HTML into PDF and various image formats using the QT Webkit rendering engine. These run entirely "headless" and do not require a display or display service. ...

  • SlimerJS
    SlimerJS

    It allows you to manipulate a web page with an external Javascript script: opening a webpage, clicking on links, modifying the content... It is useful to do functional tests, page automation, network monitoring, screen capture etc. ...

  • Puppeteer
    Puppeteer

    Puppeteer is a Node library which provides a high-level API to control headless Chrome over the DevTools Protocol. It can also be configured to use full (non-headless) Chrome. ...

  • CasperJS
    CasperJS

    CasperJS is a browser navigation scripting & testing utility written in Javascript for PhantomJS or SlimerJS. ...

  • Node.js
    Node.js

    Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices. ...

PhantomJS alternatives & related posts

Selenium logo

Selenium

12.9K
10.2K
521
Web Browser Automation
12.9K
10.2K
+ 1
521
PROS OF SELENIUM
  • 171
    Automates browsers
  • 154
    Testing
  • 101
    Essential tool for running test automation
  • 24
    Remote Control
  • 24
    Record-Playback
  • 8
    Data crawling
  • 7
    Supports end to end testing
  • 6
    Functional testing
  • 6
    Easy set up
  • 4
    The Most flexible monitoring system
  • 3
    Easy to integrate with build tools
  • 3
    End to End Testing
  • 2
    Integration Tests
  • 2
    Comparing the performance selenium is faster than jasm
  • 2
    Record and playback
  • 2
    Compatible with Python
  • 2
    Easy to scale
  • 0
    Integrated into Selenium-Jupiter framework
CONS OF SELENIUM
  • 8
    Flaky tests
  • 4
    Slow as needs to make browser (even with no gui)
  • 1
    Update browser drivers

related Selenium posts

Kamil Kowalski
Lead Architect at Fresha · | 28 upvotes · 1.6M views

When you think about test automation, it’s crucial to make it everyone’s responsibility (not just QA Engineers'). We started with Selenium and Java, but with our platform revolving around Ruby, Elixir and JavaScript, QA Engineers were left alone to automate tests. Cypress was the answer, as we could switch to JS and simply involve more people from day one. There's a downside too, as it meant testing on Chrome only, but that was "good enough" for us + if really needed we can always cover some specific cases in a different way.

See more
Benjamin Poon
QA Manager - Engineering at HBC Digital · | 8 upvotes · 875.4K views

For our digital QA organization to support a complex hybrid monolith/microservice architecture, our team took on the lofty goal of building out a commonized UI test automation framework. One of the primary requisites included a technical minimalist threshold such that an engineer or analyst with fundamental knowledge of JavaScript could automate their tests with greater ease. Just to list a few: - Nightwatchjs - Selenium - Cucumber - GitHub - Go.CD - Docker - ExpressJS - React - PostgreSQL

With this structure, we're able to combine the automation efforts of each team member into a centralized repository while also providing new relevant metrics to business owners.

See more
Electron logo

Electron

9.2K
8.3K
137
Build cross platform desktop apps with JavaScript, HTML, and CSS
9.2K
8.3K
+ 1
137
PROS OF ELECTRON
  • 66
    Easy to make rich cross platform desktop applications
  • 50
    Open source
  • 12
    Great looking apps such as Slack and Visual Studio Code
  • 6
    Because it's cross platform
  • 3
    Use Node.js in the Main Process
CONS OF ELECTRON
  • 17
    Uses a lot of memory
  • 8
    User experience never as good as a native app
  • 4
    No proper documentation
  • 4
    Does not native
  • 1
    Each app needs to install a new chromium + nodejs
  • 1
    Wrong reference for dom inspection

related Electron posts

The Slack desktop app was originally written us the MacGap framework, which used Apple’s WebView to host web content inside of a native app frame. As this approach continued to present product limitations, Slack decided to migrate the desktop app to Electron. Electron is a platform that combines the rendering engine from Chromium and the Node.js runtime and module system. The desktop app is written as a modern ES6 + async/await React application.

For the desktop app, Slack takes a hybrid approach, wherein some of the assets ship as part of the app, but most of their assets and code are loaded remotely.

See more

Slack's new desktop application was launched for macOS. It was built using Electron for a faster, frameless look with a host of background improvements for a superior Slack experience. Instead of adopting a complete-in-box approach taken by other apps, Slack prefers a hybrid approach where some of the assets are loaded as part of the app, while others are made available remotely. Slack's original desktop app was written using the MacGap v1 framework using WebView to host web content within the native app frame. But it was difficult to upgrade with new features only available to Apple's WKWebView and moving to this view called for a total application rewrite.

Electron brings together Chromium's rendering engine with the Node.js runtime and module system. The new desktop app is now based on an ES6 + async/await React application is currently being moved gradually to TypeScript. Electron functions on Chromium's multi-process model, with each Slack team signed into a separate process and memory space. It also helps prevent remote content to directly access desktop features using a feature called WebView Element which creates a fresh Chromium renderer process and assigns rendering of content for its hosting renderer. Additional security can be ensured by preventing Node.js modules from leaking into the API surface and watching out for APIs with file paths. Communication between processes on Electron is carried out via electron-remote, a pared-down, zippy version of Electron's remote module, which makes implementing the web apps UI much easier.

See more
Protractor logo

Protractor

1.3K
518
32
End-to-end test framework for Angular and AngularJS applications
1.3K
518
+ 1
32
PROS OF PROTRACTOR
  • 9
    Easy setup
  • 8
    Quick tests implementation
  • 5
    Flexible
  • 5
    Open source
  • 5
    Promise support
CONS OF PROTRACTOR
  • 4
    Limited

related Protractor posts

Raziel Alron
Automation Engineer at Tipalti · | 7 upvotes · 250K views

Currently, we are using Protractor in our project. Since Protractor isn't updated anymore, we are looking for a new tool. The strongest suggestions are WebdriverIO or Puppeteer. Please help me figure out what tool would make the transition fastest and easiest. Please note that Protractor uses its own locator system, and we want the switch to be as simple as possible. Thank you!

See more
Sai Chaitanya Mankala
Tech Lead at KIOT Innovations · | 6 upvotes · 127.3K views

Protractor or Cypress for ionic-angular?

We have a huge ionic-angular app with almost 100 pages and 10+ injectables. There are no tests written yet. Before we start, we need some suggestions about the framework. Would you suggest Cypress or Angular's Protractor with Jasmine / Karma for a heavy ionic app with Angular?

See more
wkhtmltopdf logo

wkhtmltopdf

55
97
0
Convert HTML to PDF using Webkit (QtWebKit)
55
97
+ 1
0
PROS OF WKHTMLTOPDF
    Be the first to leave a pro
    CONS OF WKHTMLTOPDF
      Be the first to leave a con

      related wkhtmltopdf posts

      SlimerJS logo

      SlimerJS

      7
      14
      0
      A scriptable browser for Web developers
      7
      14
      + 1
      0
      PROS OF SLIMERJS
        Be the first to leave a pro
        CONS OF SLIMERJS
          Be the first to leave a con

          related SlimerJS posts

          Puppeteer logo

          Puppeteer

          387
          520
          25
          Headless Chrome Node API
          387
          520
          + 1
          25
          PROS OF PUPPETEER
          • 10
            Scriptable web browser
          • 9
            Very well documented
          • 6
            Promise based
          CONS OF PUPPETEER
          • 10
            Chrome only

          related Puppeteer posts

          Raziel Alron
          Automation Engineer at Tipalti · | 7 upvotes · 250K views

          Currently, we are using Protractor in our project. Since Protractor isn't updated anymore, we are looking for a new tool. The strongest suggestions are WebdriverIO or Puppeteer. Please help me figure out what tool would make the transition fastest and easiest. Please note that Protractor uses its own locator system, and we want the switch to be as simple as possible. Thank you!

          See more

          I work in a company building web apps with AngularJS. I started using Selenium for tests automation, as I am more familiar with Python. However, I found some difficulties, like the impossibility of using IDs and fixed lists of classes, ending up with using xpaths most, which unfortunately could change with fixes and modifications in the code.

          So, I started using Puppeteer, but I am still learning. It seems easier to find elements on the webpage, even if the creation and managing of arrays of elements seem to be a little bit more complicated than in Selenium, but it could be also due to my poor knowledge of JavaScript.

          Any comments on this comparison and also on comparisons with similar tools are welcome! :)

          See more
          CasperJS logo

          CasperJS

          68
          113
          0
          Navigation scripting & testing for PhantomJS and SlimerJS
          68
          113
          + 1
          0
          PROS OF CASPERJS
            Be the first to leave a pro
            CONS OF CASPERJS
              Be the first to leave a con

              related CasperJS posts

              Tim Abbott

              We use CasperJS because we adopted it back in 2013 for JavaScript frontend testing. It was a really nice system back then compared to what else was out there; you had PhantomJS as a programmable browser that actually rendered CSS and everything, it was really fast (speed is a big downside of e.g. Selenium), and it was possible to make non-flaky frontend integration tests with it.

              I wouldn't recommend it today, because PhantomJS is a basically dead project, and as a result, so is CasperJS. I expect we'll migrate to something else. We haven't in large part because 95% of our new tests are written with a simple Node.js-based unit testing framework we use that run 35K lines of unit tests covering most of our JS codebase in 3.6 seconds. And for the things where we want an integration test, CasperJS does work, and I think there's a good chance that waiting another year or two will result in our being able to switch to a much better option than what we'd get if we migrated now.

              See more
              Node.js logo

              Node.js

              148.8K
              125.6K
              8.5K
              A platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications
              148.8K
              125.6K
              + 1
              8.5K
              PROS OF NODE.JS
              • 1.4K
                Npm
              • 1.3K
                Javascript
              • 1.1K
                Great libraries
              • 1K
                High-performance
              • 801
                Open source
              • 485
                Great for apis
              • 475
                Asynchronous
              • 420
                Great community
              • 390
                Great for realtime apps
              • 295
                Great for command line utilities
              • 81
                Node Modules
              • 81
                Websockets
              • 68
                Uber Simple
              • 59
                Great modularity
              • 58
                Allows us to reuse code in the frontend
              • 42
                Easy to start
              • 35
                Great for Data Streaming
              • 32
                Realtime
              • 28
                Awesome
              • 25
                Non blocking IO
              • 18
                Can be used as a proxy
              • 17
                High performance, open source, scalable
              • 16
                Non-blocking and modular
              • 15
                Easy and Fun
              • 14
                Easy and powerful
              • 13
                Same lang as AngularJS
              • 13
                Future of BackEnd
              • 12
                Fullstack
              • 11
                Fast
              • 10
                Scalability
              • 10
                Cross platform
              • 9
                Simple
              • 8
                Mean Stack
              • 7
                Easy concurrency
              • 7
                Great for webapps
              • 6
                React
              • 6
                Friendly
              • 6
                Typescript
              • 6
                Fast, simple code and async
              • 5
                Easy to use and fast and goes well with JSONdb's
              • 5
                Fast development
              • 5
                Control everything
              • 5
                Great speed
              • 5
                Scalable
              • 5
                Its amazingly fast and scalable
              • 4
                It's fast
              • 4
                Isomorphic coolness
              • 4
                Easy to use
              • 3
                Less boilerplate code
              • 3
                Easy to learn
              • 3
                Easy
              • 3
                Great community
              • 3
                Not Python
              • 3
                Sooper easy for the Backend connectivity
              • 3
                Performant and fast prototyping
              • 3
                Blazing fast
              • 3
                TypeScript Support
              • 3
                Scales, fast, simple, great community, npm, express
              • 3
                One language, end-to-end
              • 2
                Npm i ape-updating
              • 2
                Event Driven
              • 2
                Lovely
              CONS OF NODE.JS
              • 46
                Bound to a single CPU
              • 43
                New framework every day
              • 37
                Lots of terrible examples on the internet
              • 30
                Asynchronous programming is the worst
              • 23
                Callback
              • 18
                Javascript
              • 11
                Dependency hell
              • 11
                Dependency based on GitHub
              • 10
                Low computational power
              • 7
                Very very Slow
              • 7
                Can block whole server easily
              • 6
                Callback functions may not fire on expected sequence
              • 3
                Unneeded over complication
              • 3
                Unstable
              • 3
                Breaking updates
              • 1
                Bad transitive dependency management
              • 1
                Can't read server session
              • 1
                No standard approach

              related Node.js posts

              Nick Rockwell
              SVP, Engineering at Fastly · | 44 upvotes · 2.1M views

              When I joined NYT there was already broad dissatisfaction with the LAMP (Linux Apache HTTP Server MySQL PHP) Stack and the front end framework, in particular. So, I wasn't passing judgment on it. I mean, LAMP's fine, you can do good work in LAMP. It's a little dated at this point, but it's not ... I didn't want to rip it out for its own sake, but everyone else was like, "We don't like this, it's really inflexible." And I remember from being outside the company when that was called MIT FIVE when it had launched. And been observing it from the outside, and I was like, you guys took so long to do that and you did it so carefully, and yet you're not happy with your decisions. Why is that? That was more the impetus. If we're going to do this again, how are we going to do it in a way that we're gonna get a better result?

              So we're moving quickly away from LAMP, I would say. So, right now, the new front end is React based and using Apollo. And we've been in a long, protracted, gradual rollout of the core experiences.

              React is now talking to GraphQL as a primary API. There's a Node.js back end, to the front end, which is mainly for server-side rendering, as well.

              Behind there, the main repository for the GraphQL server is a big table repository, that we call Bodega because it's a convenience store. And that reads off of a Kafka pipeline.

              See more
              Conor Myhrvold
              Tech Brand Mgr, Office of CTO at Uber · | 41 upvotes · 5.2M views

              How Uber developed the open source, end-to-end distributed tracing Jaeger , now a CNCF project:

              Distributed tracing is quickly becoming a must-have component in the tools that organizations use to monitor their complex, microservice-based architectures. At Uber, our open source distributed tracing system Jaeger saw large-scale internal adoption throughout 2016, integrated into hundreds of microservices and now recording thousands of traces every second.

              Here is the story of how we got here, from investigating off-the-shelf solutions like Zipkin, to why we switched from pull to push architecture, and how distributed tracing will continue to evolve:

              https://eng.uber.com/distributed-tracing/

              (GitHub Pages : https://www.jaegertracing.io/, GitHub: https://github.com/jaegertracing/jaeger)

              Bindings/Operator: Python Java Node.js Go C++ Kubernetes JavaScript OpenShift C# Apache Spark

              See more