Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Grammar and intro summary #78

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 24 additions & 21 deletions at-a-glance.rst
Original file line number Diff line number Diff line change
@@ -1,43 +1,46 @@
Mink at a Glance
================

There's huge number of browser emulators out there, like `Goutte`_, `Selenium`_,
`Sahi`_ and others. They all do the same job, but do it very differently.
They behave differently and have very different API's. But, what's more important,
there is actually 2 completely different types of browser emulators out there:
Mink provides you with a consistent API that can be used with multiple browser
testing suites in order to choose the best tool for the task at hand - without
rewriting your tests.

There's a huge number of browser emulators out there, like `Goutte`_, `Selenium`_,
`Sahi`_ and others. They all do a similar job, but approach the problem differently
and have very different APIs. There are two main types of browser emulators out there:

* Headless browser emulators
* Browser controllers

First type browser emulators are simple pure HTTP specification implementations, like
The first, browser emulators, are pure HTTP specification implementations like
`Goutte`_. Those browser emulators send a real HTTP requests against an application
and parse the response content. They are very simple to run and configure,
because this type of emulators can be written in any available programming
language and can be run through console on servers without GUI. Headless
emulators have both advantages and disadvantages. Advantages are simplicity,
speed and ability to run it without the need of a real browser. But this
type of browsers has one big disadvantage, they have no JS/AJAX support.
language and can be run in the console on servers without a GUI. Headless
emulators have both advantages and disadvantages. The advantages are simplicity,
speed and ability to run it without the need of a real browser. But, this
type of emulator has one big disadvantage. They have no JavaScript/AJAX support.
So, you can't test your rich GUI web applications with headless browsers.

Second browser emulators type are browser controllers. Those emulators aim
to control the real browser. That's right, a program to control another program.
Browser controllers simulate user interactions on browser and are able to
retrieve actual information from current browser page. `Selenium`_ and `Sahi`_
The second type of browser emulators are browser controllers. These emulators aim
to control a real browser. That's right, a program to control another program.
Browser controllers simulate user interactions in browser and are able to
retrieve actual information from the current browser page. `Selenium`_ and `Sahi`_
are the two most famous browser controllers. The main advantage of browser
controllers usage is the support for JS/AJAX interactions on page. The disadvantage
is that such browser emulators require the installed browser, extra configuration
and are usually much slower than headless counterparts.
controllers is the support for JavaScipt/AJAX interactions on a page. The disadvantage
is that such browser emulators require an installed browser as well as extra configuration
and are usually much slower than their headless counterparts.

So, the easy answer is to choose the best emulator for your project and use
its API for testing. But as we've already seen, both browser emulator types have both
advantages and disadvantages. If you choose headless browser emulator, you
will not be able to test your JS/AJAX pages. And if you choose browser controller,
your overall test suite will become very slow at some point. So, in real
its API for testing. However, as we've already seen, both types have
advantages and disadvantages. If you choose a headless browser emulator, you
will not be able to test your JavaScript/AJAX pages. And if you choose a browser controller,
your overall test suite will become very slow at some point. So, in the real
world we should use both! And that's why you need a **Mink**.

**Mink** removes API differences between different browser emulators providing
different drivers (read in :doc:`/guides/drivers` chapter) for every browser
emulator and providing you with the easy way to control the browser (:doc:`/guides/session`),
emulator and providing you with an easy way to control the browser (:doc:`/guides/session`),
traverse pages (:doc:`/guides/traversing-pages`), manipulate page elements
(:doc:`/guides/manipulating-pages`) or interact with them (:doc:`/guides/interacting-with-pages`).

Expand Down