Up to version 1.41 - Copyright 2004, 2005, 2006 Corey Goldberg ([email protected]) For information and documentation on version 1.41, visit the website at http://www.webinject.org
Version 1.42 onwards - Tim Buckland, https://github.com/Qarj/WebInject
- auto retry feature introduced with autoretry and ignoreautoretry parameters
- to reduce confusion, the Selenium component of WebInject has been moved into its own project WebInject-Selenium and is now an optional plugin to WebInject
- random parameter has been changed so it will never generate a 0 as the first character
- fixed an issue with simple http auth
- added a new decode parameter - decodesmtp - this will decoded double dot encoded text
- fix an issue with helper_wait_visible and helper_wait_not_visible finding elements that do not exist
- major tidy up of "Locators for Testers" and tweaks to heuristics
- removed many helper functions no longer required
- optimised the "Locators for Testers" so they use a generic framework rather than copy and pasted code with slight variations
- helper_send_keys_to_element[_after/_before] now uses Selenium to send the keys rather than setting value directly via JavaScript
- set of helpers I think of as "Locators for Testers" - heuristics find target element without needing to view source or inspect element
- these "Locators for Testers" are helper_keys_to_element, helper_keys_to_element_after, helper_click, helper_click_before, helper_click_after
- additional helpers to easily get current state: helper_get_attribute, helper_get_element_value, helper_get_selection, helper_is_checked
- put a framework in place for WebInject Selenium self tests
- helper_keys_to_element_after now will ignore elements with type == 'hidden'
- httpauth delimiter can now be any character you want - the first character of the httpauth string specifies the delimiter
- new helper function helper_keys_to_input_after renamed to helper_keys_to_element_after and made compatible with Salesforce
- helper_keys_to_element_after can now set SELECT i.e. drop down values
- helper_keys_to_element_after can now check and uncheck checkboxes
- new helper function helper_keys_to_input_after which searches the page for some text and sets the next input field to a desired value
- new fail fast! feature for assertions, i.e. if assertion fails, do not retry
- removed retryresponsecode feature - no longer relevant due to fail fast! feature
- display on STDOUT which verifypositive or verifynegative failed
- --verbose option will make WebInject show the request and response on STDOUT
- --basefolder option removed (was used for image comparison which is now implemented differently)
- --no-output option will now also not create files in the output folder (in addition to no STDOUT) unless the tests specifically create files, or Selenium is used
- WebInject aborts in a handled way (i.e. with error messaging) when there are connectivity issues with Selenium Server
- maxredirect parameter added for GET requests
- fixed a bug with useragent parameter (did not work on first test step)
- Selenium Server is now started by WebInject using --selenium-binary option (which means WebInject can restart the Selenium Server if it needs a kick)
- --binary option changed to --chromedriver-binary
- variables set in the user_defined section of the config file can now refer to variables themselves e.g. {:8080}
- ignorehttpresponsecode parameter is no longer counted as a passed verification
- a message is logged to STDOUT when ignorehttpresponsecode is used
- created a self test for Selenium functionality - works on both Windows and Linux
- removed Firefox and PhantomJS support
- removed support for fast screenshot (ChromeDriver inbuilt screenshot is fast)
- optimised Selenium helper functions
- renamed local and global variables + subroutine names according to a different naming standard
- removed reference to Crypt::SSLeay library - no longer needed for SSL
- ensured call to search-image.py can work on Linux as well as Windows
- change to semantic version numbering
- added back --no-output command line option
- added back Nagios plugin mode support
- removed xnode feature for running a single test step
- fixed selftest compatibility for Perl 5.24.0
- log separator now written after a test step, not before (as per original functionality)
- WebInject now determines whether to try and render a test result based on whether it contains <html and <body tags
- output of shell command tests were sometimes being treated as http headers, fixed
- reduced startup time for tests that do not invoke a http session - makes the self tests much quicker
- made core WebInject compatible with Linux (Selenium support still be to addressed)
- renamed http.log to http.txt - http.txt can be served by web servers without adding a mime type
- added environments donotrunon feature
- set exit code of 1 if one or more test steps failed
- fixed seeding of random numbers
- made log separator much larger
- made it easier to debug test files that fail parsing + better messaging
- file handles are now opened and closed for every test step
- replaced liveonly and testonly parameters with all-purpose runon
- bug fix - searchimage filename should show in results xsl if not found
- {RANDOM:10} was meant to produce 10 random alphanumeric characters but did not do anything - fixed
- in certain circumstances
<
,>
and&
was being written within results.xml tags - now substituted with {LESSTHAN}, {GREATERTHAN} and {AMPERSAND} respectively - there is now no need to escape
<
when used in test case attributes - stopped Response.pm croacking webinject.pl when the request url is empty
- renamed image_in_image.py to search-image.py (and separated it to its own project on GitHub)
- added a feature to make it easy to reuse common test steps - e.g. login, register an account
- removed checkpositive, checknegative and checkresponsecode feature - hard to understand and not compatible with verifyresponseTEXT
- link to Selenium page grabs in the step results
- link to email files in the step results
- parseresponse before writing log files
- resources from gethrefs and getcss and getbackgroundimages are now substituted into the step results
- auto substitution logic improvement
- can now specify ports in format {:4040} - the port will be removed entirely if desired, or converted to :4040
- improved date time format for start_time in results.xml
- restructured results.xml format for verifypositive, verifynegative, autoassertions, smartassertions and searchimage
- create a html file for every single test step e.g. 10.html, 20.html
- now can generate random strings and numbers {RANDOM:5:NUMERIC} {RANDDOM:10:ALPHANUMERIC} {RANDOM:6:ALPHA}
- escape modifier on parseresponse changed to use a uri escape regex
- support quotemeta in addition to escape and decode as a parseresponse result modifier (see manual)
- absolute output folder path supported (in addition to relative)
- can now start a Chrome browser without a proxy
- PUT and DELETE http REST verbs supported
- can now specify location of chromedriver.exe instead of a selenium server port
- chromedriver log file will be written to the output folder (--verbose)
- improved logic for overwriting pages in the cache
- refactored sub selenium to make it a lot easier to understand
- absolute path is now supported for config file and testcase file
- fixed introduced bug - processcasefile needs to be called after startsession so the agent can be set
- refactored and improved the auto substitution feature to work in more edge case scenarios
- improved the auto substitution feature - should work in a wider range of scenarios - tested with .NET WebForms and MVC
- messaging around assertion skips was buggy, now fixed and an appropriate selftest added
- some code tidy up
- removed a feature - specifiying multiple test case files to process in the config (classic example of overengineering)
- more code tidy up
- substantial code tidy up
- recently introduced bug resolved with {TESTFILENAME}
- more code tidy up - addressed almost all sev 4 issues
- code tidy up - resolved more than 40 sev 4 perl critic issues
- made whackoldfiles safer for running WebInject in parallel
- reverted eval methods, made whackoldfiles work properly
- removed all use of barewords as file handles, changed eval methods
- moved the execution of decodequotedprintable to before the assertions
- changed to 3 argument open, changed many of the opens away from bareword file handles
- made loop iterators lexical
- changed select statements used as sleep statements to actual sleep statements
- fixed the assertionskipsmessage reporting - was missed from many of the different assertion types
- changed custom_wait_for_text_visible so that you can supply a locator
- removed XML::Parser, no longer needed
- made the auto substitutions compatible with .NET MVC as well as .NET Web Forms
- verification and screenshot time for Selenium WebDriver tests now output to STDOUT, results.html and results.xml
- fixed a bug in sub getassets when an output folder includes a filename prefix
- removed (not in error range) text from Response Code Verification to make the output cleaner
- support changing the user agent at the test case level
- bug fix - httppost_xml was changing the response format even when not requested via formatxml
- added info about running WebInject in parallel
- new variable creation feature that can be used in the same test step e.g. varTIME="{HH}{MM}{SS}" used as desc="{TIME}"
- put binmode on logresponseasfile
- improved usage info when using webinject.pl --help
- fixed a bug where response time was bleeding over from previous test step when checkpositive, checknegative or checkresponsecode invoked
- reverted baseurl support to only baseurl, baseurl1 and baseurl2 the same as WebInject 1.41 (baseurl is superseded by userdefined config)
- removed globalhttplog config feature - we will always log to http.log
- removed logrequest and logresponse parameters - we will always log the requests and the responses
- removed anything to do with gui or $returnmessage - not supported
- removed anything to do with plotting - not supported
- removed all references to nooutput - not properly supported or needed, made code simpler
- removed all references to reporttype, this branch of WebInject is for functional testing, so the code is now cleaner
- removed assertionskipsmessage parameter - it is redundant, use the skip feature on the assertions instead
- removed deprecated global1 to global5 - replaced by userdefined config
- removed unused feature in sub httppost_xml that checks if xml response is well-formed
- Error package no longer needs to be downloaded from CPAN for Strawberry Perl
- added parameter decodequotedprintable which decodes a quoted-printable response and replaces it with the decoded version
- refactored the assertion skips functionality and summary info is now included in results.xml
- added {OPT_PROXY} and renamed {PROXYRULES} to {OPT_PROXYRULES}
- removed erroneous firstlooponly lastlooponly from config for loop
- tweak to custom_wait_for_text_visible - increased wait checks from 0.1 to 0.5 seconds
- added smartassertions feature along with ignoresmartassertions parameter
- refactored gethrefs and getsrcs, added getbackgroundimages
- Fixed a bug logresponseasfile when used with output folder filename prefix
- Fixed a bug with the sleep conditions for retryfromstep
- Now support any number of assertcount - e.g. assertcount5000, assertcountDISTANCE
- Include additional info about which testcase is being run - just after the log file separator
- Added retry parameter to cater for data replication latency
- Created a globalretry setting in the config to set a maximum number of retries for a test run
- Added sanitycheck parameter - all test execution will cease if there has been any error before the check
- Added testonly parameter - flags that a test case should only be run against test environments
- Added liveonly parameter
- Added {STARTTIME} as a substitution value - timestamp of when test execution began
- Support running of operating system commands through the backtick method
- Changed the way escape works - to fix an issue with escaping __VIEWSTATE
- Changed the way addheader works so it takes priority over maintaining cookies
- Added "application/json" to the error message that is output if you've carried out a POST using an invalid Content Type
- Added logastext parameter - writes html and xmp tags around the response in the http log
- Made a tweak to enable NTLM::Authen to work
- Made it possible to specify a custom regex in the parseresponse
- Added autocontroller only parameter - test case will only be run if the host is an automation controller (as opposed to a developer desktop)
- Added the ability to specify a custom message when a specific verifypostive or verifynegative fails
- Added the ability to decode HTML Entities for parseresponse (use in place of escape)
- Changed {TEMP} to {OUTPUT}
- Added {HH}, {MM} and {SS} substitutions
- Added {COUNTER} substitution - shows current loop number
- Support Selenium Server 2.0
- Added parameters checkpositive, checknegative, checkresponsecode - allows specific test cases to be skipped in error scenarios
- When WebInject loops, 10000 is now added to the test case numbers
- Added {TESTNUM} substitution
- Added {OUTSUM} substitution - simple hash of the output folder - was added to increase uniqueness of data when running in parallel
- Added section parameter - for specifying a section break in the results
- Added assertcount parameter - asserts that you find a particular regex exactly the specified number of times
- Added onceonly parameter - when WebInject loops, onceonly test cases will be ignored
- Added firstlooponly and lastlooponly parameters - test cases will only be run on the first or last loop (for setup and teardown)
- Added {DATA} substitution - will automatically pull data values from the previous test step result with the same host and path, e.g. the __VIEWSTATE value
- Added {NAME} substitution - allows simple wildcard for http post field names
- Added searchimage parameter - finds one image inside of another - requires Python 2.6 and a few other bits to work
- Added formatxml parameter - does very simplistic formatting of XML response, i.e. adds a few carriage returns here and there so the entire response is not on one line
- Added formatjson parameter - very simplistic formatting of JSON response
- Find the Windows browser window handle of the Selenium session to enable a very fast screenshot (much faster than Selenium), needed for running many Selenium tests in parallel
- Added {CONCURRENCY} substitution - the value is the output folder name only, not full path
- Added {HOSTNAME} substitution
- Explicitly state not to verify SSL certificates, required for newer versions of LWP SSL
- Added a substitution for the teststep run time, e.g. {TESTSTEPTIME:510} will substitute in the execution time of test step 510
- Added {DATETIME} and {FORMATDATETIME} substitutions
- Added addcookie parameter which will add a single cookie (as opposed to addheader which overwrites all existing cookies)
- The http log separator is now written out before each test case, in addition, a final log separator is written at the end of the test run
- Added {RETRY} substitution - shows the current retry attempt number
- Added retryfromstep parameter - will retry from the specified test case number
- Added {JUMPBACKS} substitution - the number of times retryfromstep has been invoked
- Added globaljumpbacks config value - i.e. maximum number of jump backs allowed in a test run
- Added restartbrowseronfail parameter - will restart the Selenium session and WebInject session if the test case failed
- Added restartbrowser parameter
- Added commandonerror parameter - will run an operating system command if the test case failed e.g. to clean things up
- Added support for automatic assertions to be run against every single test case - the auto assertions are specified in the config file
- Added support for arbitrary user defined substitutions from the config file so you can specify things like {DOMAIN}, {TEAMNAME}, {WEBSITEURL} or whatever
- Added {NOW} substitution - the current time, updated with every retry
- Flush html results to disk immediately before making the web call for each test case
- Added -i WebInject.pl start up option, all retry and retryfromstep will be ignored
- Added a way of tagging production issues without having to comment out / remove the test case
- Added support for as many parseresponses as you desire so you can now go parseresponseMYVARIABLE="..." and refer to it as {MYVARIABLE}
- As a result of the parseresponse change, parseresponse with numbers will now be referred as {1}, {2}, {50} etc ..., use {} for null
- Replaced all tabs with 4 spaces
- Support any number of verifypositive and verifynegative
- verifypositivenext, verifynegativenext parameters removed - not compatible with retry, also could not think of any scenario where this feature is necessary
- Added gethrefs and getsrcs parameters - used saving off page assets that match a wildcard
- Changed the way substitution works, so instead of having a simple for loop over known parameters, all test case attributes are included by way of a foreach
- Added verifyresponsetime parameter
- Added retryresponsecode parameter - retry if a particular http response code is found, e.g. 500
- Added {ELAPSED_SECONDS} and {ELAPSED_MINUTES} substitutions (updated with every retry)
- Added helper subroutines for Selenium WebDriver to do common tasks e.g. peform a click using JavaScript, the subroutines are
- custom_select_by_text
- custom_clear_and_send_keys
- custom_mouse_move_to_location
- custom_switch_to_window
- custom_js_click
- custom_js_set_value
- custom_js_make_field_visible_to_webdriver
- custom_check_element_within_pixels
- custom_wait_for_text_present
- custom_wait_for_text_not_present
- custom_wait_for_text_visible
- custom_wait_for_text_not_visible
- custom_wait_for_element_present
- custom_wait_for_element_visible
- Added ability to add multiple HTTP Headers within an 'addheader' testcase parameter
- Added 'addheader' testcase parameter to GET requests (previously only supported POST)
- Fixed GUI layout for high dpi displays
- Bugfixes for 'verifyresponsecode' and 'errormessage' parameters
- Support for Web Services (SOAP/XML)
- Added XML parser for parsing and verification of XML responses (web services)
- Support for 'text/xml' and 'application/soap+xml' Content-Type (web services)
- Added new 'addheader' testcase parameter so you can specify an additional HTTP Header field for requests
- Support for setting variables/constants within test case files
- Added ability to call generic external Perl plugins for easier integration and post-processing
- More detail added to XML output
- Code refactoring
- New command line option (-o) to specify location for writing output files (http.log, results.html, and results.xml)
- Nagios plugin performance data support
- Allows multiple 'httpauth' elements in config files to support multiple sets of HTTP Authentication credentials
- New 'verifyresponsecode' test case parameter for HTTP Response Code verification
- Additional 'baseurl' elements supported in the config file
- Additional verification parameters supported in test cases
- Added -V command line option (same as -v) to print version info (necessary for it to run with Moodss)
- Code refactoring
- MRTG External Monitoring Script (Plugin) compatibility
- Bugfix for using comment tags in config files
- Suppress logging when running in plugin mode
- Changed default standalone plot mode to OFF
- Nagios Plugin compatibility
- Support for multipart/form-data encoded POSTs (file uploads)
- Updated results.html output so it is valid XHTML
- Bugfix for erroneous dummy test case printing in GUI status
- Bugfix for warning that appeared when running GUI with Perl in -w mode
- Bugfix for errors and broken status bar in GUI
- HTTP Basic Authentication support
- No longer forced to have test cases in strict incremental numbered order
- Source code compiles with the "use strict" pragma
- Ability to run engine from a different directory using alternate test case and config files
- Comments allowed in config file using tags
- Other config.xml options are still used when you pass a test case filename as a command line argument
- New config option to change response delay timeout
- New test case parameter to add a custom error message
- Added separators to http.log for readability
- Enhanced command line options/switches
- Nagios Plugin compatibility (beta)
- More verbose error handling when running from command line
- Ability to handle reserved XML character "<" within test cases by escaping it with a backslash "<"
- Changed output when using XPath notation from command line
- Bugfix for proxy support
- Bugfix for sending a parsed value in a POST body
- Bugfix for erroneous errors when running from command line
- Bugfix for warnings that appeared when running with Perl in -w mode
- Code refactoring
- Real-time response time monitoring (stats display and integration with gnuplot for plot/graph)
- Added tabbed layout to GUI with 'Status' and 'Monitor' windows
- Added 'Stop' button to GUI to halt execution
- New testcase parameter 'sleep', to throttle execution
- Added timer summary to HTML report
- Removed HTML tags from STDOUT display and cleaned up formatting
- GUI enhancements
- Code refactoring
- New test case file parameter 'repeat', to run a test case file multiple times
- Added GUI options for Minimal Output and Response Timer Output
- New config.xml parameter to define a custom User-Agent string to be sent in HTTP headers
- Added XPath Node selection to optional command line parameters
- Bugfix for GUI Restart button
- Added XML formatted output (results.xml is created each run)
- New config.xml parameter for HTTP logging
- More detailed pass/fail status to HTML report
- Redefined criteria for test case pass/pail
- Results summary and additional formatting to STDOUT (for standalone mode)
- Minor code refactoring
- Added Restart button to GUI
- Added 5 additional parsing parameters/variables to use in test cases
- Fixes to GUI positioning
- Bugfix for malformed HTTP Post
- Added colors to status window text
- Dynamic response parsing support cookieless session handling
- Added version number to GUI window title bar
- Minor bug fixes
- Added status light to GUI
- New config.xml parameter for HTTP proxy support
- New config.xml parameter for Baseurl constant
- Decoupled GUI (webinjectgui) from Test Engine (webinject) so engine can run standalone
- Testcase name can be passed on command line as well as via config.xml
- Code cleanup
- Output sent to STDOUT as well as reports (for standalone mode)
- Initial public beta release
- Contains SSL/TLS support
- Perl/Tk GUI
- Automatic cookie handling