=======
An example application that captures prominent and ugly functionality found on the web. Perfect for writing automated acceptance tests against.
Deployed and available at https://the-internet.herokuapp.com. What changed in each release is in changelog.md.
The-internet is now wholly owned by Sauce Labs Inc.!
- A/B Testing
- Add/Remove Elements
- Basic Auth (user and pass: admin)
- Broken Images
- Canvas
- Challenging DOM
- Checkboxes
- Context Menu
- Digest Authentication (user and pass: admin)
- Disappearing Elements
- Drag and Drop
- Dropdown
- Dynamic Content
- Dynamic Controls
- Dynamic Loading
- Entry Ad
- Exit Intent
- File Download
- File Upload
- Floating Menu
- Forgot Password
- Form Authentication
- Frames
- Geolocation
- Horizontal Slider
- Hovers
- Infinite Scroll
- Inputs
- JQuery UI Menus
- JavaScript Alerts
- JavaScript onload event error
- Key Presses
- Large & Deep DOM
- Large Form
- Multiple Select Dropdown
- Multiple Windows
- Nested Frames
- Notification Messages
- Radio Buttons
- Read-only Inputs
- Redirect Link
- Secure File Download
- Shadow DOM
- Shifting Content
- Slow Resources
- Sortable Data Tables
- Status Codes
- Subdirectories
- Two-Factor Login (user: tomsmith / pass: SuperSecretPassword!)
- Typos
- WYSIWYG Editor
- A/B Test Cookies and A/B Test Manual (unfinished A/B Testing variants)
- Add/Remove Elements with N buttons (
/add_remove_elements/:number) - Basic Auth with a trailing slash
- Dynamic Loading Example 1 and Example 2
- Email Sent (after Forgot Password)
- File downloads:
/download/:filename,/download_secure/:filenameand/download/jqueryui/menu/:filename - Frames: iFrame, top, left, middle, right, bottom
- Infinite Scroll page N (
/infinite_scroll/:number) - JQuery UI (linked from JQuery UI Menus)
- Large & Deep DOM with N levels (
/large/:level) - Multiple Windows: new window
- Notification Message (rendered)
- Redirect (from Redirect Link)
- Secure Area and Logout (after Form Authentication)
- Shifting Content: Menu, Image, List
- Slow external resource (used by Slow Resources; takes 30 seconds)
- Status code pages (
/status_codes/:code) - Subdirectory One and Two
- Two-Factor Login: code page (
/two_factor/code) and secure area (/two_factor/secure), after logging in
Don't see an example you need or think should be here? Contribute!
tldr;
- Fork
- Build Something
- Submit a Pull Request
- High Five!
Install Ruby (version in .ruby-version) and your dependencies:
bundle install
Start the server:
rackup
Load the page you want to see in your browser:
http://localhost:9292/url_path
Or run it with Docker:
docker build -t the-internet .
docker run -p 5000:5000 the-internet
Then open http://localhost:5000.
Run the HTTP contract suite (boots the app and checks every example):
bundle exec rake contract
Run the browser suite (Selenium, headless Chrome by default):
bundle exec rake e2e
BROWSER=firefox HEADLESS=false bundle exec rake e2e
Or on Sauce Labs (set SAUCE_USERNAME and SAUCE_ACCESS_KEY):
TARGET=saucelabs BROWSER=safari BASE_URL=https://the-internet.herokuapp.com bundle exec rspec spec/e2e
Every merged pull request is a release:
- In the pull request, bump
VERSIONand add a matching entry at the top ofchangelog.md. CI checks both. - Once it's merged, CI deploys
mainto Heroku and then tags the commit with the version (e.g.0.61.0, novprefix).