From efe811e5f6a1a2d31f35fdd83095072e88538b86 Mon Sep 17 00:00:00 2001 From: Ed Manlove Date: Sun, 31 Jul 2022 13:46:57 -0400 Subject: [PATCH 1/5] Major revision of README and Library Documentation - Overhauled the README documentation to give much more depth into how the library works and what the end user needs to know and understand. - Update links to Angular documentation within keyword doc - Added demo scripts using AngularJS.org and Angular.io tutorials and examples - Added additional citations for Google's MIT License and copyright --- AngularJSLibrary/__init__.py | 4 +- AngularJSLibrary/demo_ngcdk_dialog.robot | 12 + AngularJSLibrary/demo_phonecat.robot | 10 + AngularJSLibrary/demo_waitforangular.robot | 13 + AngularJSLibrary/test_angular2.robot | 2 +- DEVELOPERS.rst | 2 +- LICENSE | 6 +- README.rst | 308 +++++++++++++++++++-- 8 files changed, 321 insertions(+), 36 deletions(-) create mode 100644 AngularJSLibrary/demo_ngcdk_dialog.robot create mode 100644 AngularJSLibrary/demo_phonecat.robot create mode 100644 AngularJSLibrary/demo_waitforangular.robot diff --git a/AngularJSLibrary/__init__.py b/AngularJSLibrary/__init__.py index a0271aa..965b2e9 100644 --- a/AngularJSLibrary/__init__.py +++ b/AngularJSLibrary/__init__.py @@ -182,9 +182,9 @@ def __init__(self, For more information please refer to the following documentation: - $rootElement - [https://docs.angularjs.org/api/ng/service/$rootElement|AngularJS API documentation] + $rootElement - [https://code.angularjs.org/snapshot-stable/docs/api/ng/service/$rootElement|AngularJS API documentation] - ngApp - [https://docs.angularjs.org/api/ng/directive/ngApp|AngularJS API documentation] + ngApp - [https://code.angularjs.org/snapshot-stable/docs/api/ng/directive/ngApp|AngularJS API documentation] Not Yet Implemented - ``implicit_angular_wait`` is the implicit timeout that AngularJS library waits for angular to finish rendering and waits for any outstanding $http calls. diff --git a/AngularJSLibrary/demo_ngcdk_dialog.robot b/AngularJSLibrary/demo_ngcdk_dialog.robot new file mode 100644 index 0000000..59c8ba0 --- /dev/null +++ b/AngularJSLibrary/demo_ngcdk_dialog.robot @@ -0,0 +1,12 @@ +*** Settings *** +Library SeleniumLibrary +Library AngularJSLibrary root_selector=material-docs-app + +*** Test Cases *** +Add Favorite Animal To Dialog + Open Browser https://material.angular.io/cdk/dialog/examples Chrome + Input Text //input[@for='dialog-user-name'] Robot Framework + Click Button Pick one + Input Text //input[@for='favorite-animal'] Aibo + Click Button OK + Element Text Should Be //cdk-dialog-overview-example/ol/li[3] You chose: Aibo \ No newline at end of file diff --git a/AngularJSLibrary/demo_phonecat.robot b/AngularJSLibrary/demo_phonecat.robot new file mode 100644 index 0000000..8ce76eb --- /dev/null +++ b/AngularJSLibrary/demo_phonecat.robot @@ -0,0 +1,10 @@ +*** Settings *** +Library SeleniumLibrary +Library AngularJSLibrary root_selector=[ng-app] + +*** Test Cases *** +Search Through The Phone Catalog For Samsung Phones + Open Browser http://angular.github.io/angular-phonecat/step-14/app Chrome + Input Text //input Samsung + Click Link Samsung Galaxy Tab™ + Element Text Should Be css:phone-detail h1 Samsung Galaxy Tab™ \ No newline at end of file diff --git a/AngularJSLibrary/demo_waitforangular.robot b/AngularJSLibrary/demo_waitforangular.robot new file mode 100644 index 0000000..b799e84 --- /dev/null +++ b/AngularJSLibrary/demo_waitforangular.robot @@ -0,0 +1,13 @@ +*** Settings *** +Library SeleniumLibrary +Library AngularJSLibrary ignore_implicit_angular_wait=True + +*** Test Cases *** +Search Through The Phone Catalog For Samsung Phones + Open Browser http://angular.github.io/angular-phonecat/step-14/app Chrome + Wait For Angular + Input Text //input Samsung + Wait For Angular + Click Link Samsung Galaxy Tab™ + Wait For Angular + Element Text Should Be css:phone-detail h1 Samsung Galaxy Tab™ \ No newline at end of file diff --git a/AngularJSLibrary/test_angular2.robot b/AngularJSLibrary/test_angular2.robot index a6ca1a7..1a74669 100644 --- a/AngularJSLibrary/test_angular2.robot +++ b/AngularJSLibrary/test_angular2.robot @@ -1,5 +1,5 @@ *** Settings *** -Library Selenium2Library +Library SeleniumLibrary Library AngularJSLibrary *** Test Case *** diff --git a/DEVELOPERS.rst b/DEVELOPERS.rst index 2d6ba09..2df97c1 100644 --- a/DEVELOPERS.rst +++ b/DEVELOPERS.rst @@ -48,7 +48,7 @@ Steps to update keyword documentation Current Steps to Setup Development Environment and Run Tests ------------------------------------------------------------ -Here are the current (as of Aug. 3, 2018, selenium==3.14.0, robotframework-seleniumlibrary==3.2.0.dev1, protractor==5.4.0) instructions for setting up the development environment and running the tests +Here are the current (as of July 25, 2022, selenium==4.3.0, robotframework-seleniumlibrary==6.1.0.dev1, protractor==6.0.0) instructions for setting up the development environment and running the tests .. code:: bash diff --git a/LICENSE b/LICENSE index ea1006b..17a143e 100644 --- a/LICENSE +++ b/LICENSE @@ -206,11 +206,13 @@ AngularJSLibrary\ng-repeater.js: AngularJSLibrary\ng-repeater.min.js: AngularJSLibrary\__init__.py (certain javascript portions): +Various code examples (as noted in the documentation): The MIT License - Copyright (c) 2010-2015 Google, Inc. - + Copyright (c) 2010-2020 Google LLC. http://angularjs.org + Copyright (c) 2010-2022 Google LLC. http://angular.io/license + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights diff --git a/README.rst b/README.rst index 5a7b068..0fa513a 100644 --- a/README.rst +++ b/README.rst @@ -1,18 +1,24 @@ AngularJSLibrary - robotframework-angularjs =========================================== -An AngularJS and Angular extension to Robotframework's SeleniumLibrary - -About the support for various Angular and Selenium Library versions -------------------------------------------------------------------- -As of AngularJSLibrary version 0.0.7 (31 March, 2018 release) only the SeleniumLibrary is supported (despite the name of the GITHUB group hosting the library). - -The AngularJSLibrary, despite the name including JS, supports both Angular 2.0+ (known as simply Angular) and Angular 1.0 (also known as Angular JS). - - -What is included ----------------- -AngularJSLibrary provides functionality in two key areas: angular specific **locator strategies** and **waiting**. Just as there are strategies provide by the SeleniumLibrary for locating elements by ID, CSS, or xPath, this library adds startegies for finding elements by binding, model, and repeater. The library also provides both an explicit keyword for waiting on angular and an implicit wait. - +An AngularJS and Angular extension to Robotframework's SeleniumLibrary. +AngularJSLibrary primarily provides functionality to deal with **waiting** and +thus timing issue when testing Angular based websites. The library does this by +providing first an implicit wait and, subsequently, an explicit keyword for +waiting on angular. + +About the support for various Angular versions and overall status of this library +--------------------------------------------------------------------------------- +The AngularJSLibrary, despite the name including JS, supports testing against +both Angular 2.0+ (known as simply Angular) and Angular 1.0 (also known as +Angular JS). + +This library is considered mature and feature complete. Ongoing support is +provided through the Robot Framework community Slack. Thus it may appear +to be abandoned or neglected for which it is not. + +**Please carefully read through this README in its entirety**. It covers how +to configure and import the library into your test scripts, use and understand +its key functionality, as well as troubleshooting and debugging information. Installation ------------ @@ -29,43 +35,276 @@ Alternatively, to install from source: python setup.py install + +Identifying the Angular root element +------------------------------------ +Prior to importing the library, one must identify the Angular root element or root +component. For more information about + +Here are a few examples of Angular sites and their corresponding root elements or +components. The first example is from the `AngularJS.org PhoneCat tutorial `_. +The base html code is + +.. code:: html + + + + + + -Keyword Documentation ---------------------- -The keyword documentation can be found on the `Github project page `_. +
+
+
+ + + + +In the PhoneCat tutorial the html element with the ng-app attribute is the root +element. Thus for this website the root selector would be :code:`[ng-app]`. The +next example is the `Getting started with Angular tutorial `_ +on angular.io site. It's main html looks like + +.. code:: html + + + + + + + + + + + +Here the root component is the app-root element and thus the root selector for +this website would be :code:`app-root`. The last example is the `example tab of +the Dialog UI component `_ +within the Angular.io Component Dev Kit (CDK). + +.. code:: html + + + + + + + + + + + + +The root component for the Dialog component example page is the material-docs-app +element. The root selector will be :code:`material-docs-app`. +Now we will use the root selector when we import the library. Importing the library --------------------- -In order to use the keywords you have to include AngularJSLibrary in the settings section of your test or test suite. Note will will need to include the SeleniumLibrary **before** you import the AngularJSLibrary. +The proper name for importing the library is :code:`AngularJSLibrary`. You will +need to include the SeleniumLibrary **before** you import the AngularJSLibrary. +The first of two library options is `root_selector`. So using our first example, +the PhoneCat tutorial from AngularJS.org above, our import may look like, .. code:: robotframework *** Settings *** - Library SeleniumLibrary - Library AngularJSLibrary - ... + Library SeleniumLibrary + Library AngularJSLibrary root_selector=[ng-app] *** Test Cases *** - Go To localhost:8080 - Wait for Angular - ... + Search Through The Phone Catalog For Samsung Phones + Open Browser http://angular.github.io/angular-phonecat/step-14/app Chrome + Input Text //input Samsung + Click Link Samsung Galaxy Tab™ + Element Text Should Be css:phone-detail h1 Samsung Galaxy Tab™ -There are currently two library options: root_selector, ignore_implicit_angular_wait. root_selector allows the user to set the Angular root element (AngularJS) or root component (Angular). The default value is :code:`[ng-app]` and is a CSS selector; more specifically an attribute selector looking for an element with the attribute :code:`ng-app`. Starting in AngularJSLibrary version 0.0.10 if the root selector query fails an error is thrown noting the library is "[u]nable to find root selector ...". To resolve this issue one must discover the root element or component within the Angular appliction under test. +As the default value for the root_selector argument is :code:`[ng-app]`, for +the PhoneCat tutorial we did not need to specify the root_selector and could +have written the Library import as -ignore_implicit_angular_wait is a flag which when set to True the AngularJS Library will not wait for Angular $timeouts nor $http calls to complete when finding elements by locator. As noted in the Protractor documentation "this should be used only when necessary, such as when a page continuously polls an API using $timeout." The default value is False. +.. code:: robotframework + + *** Settings *** + Library SeleniumLibrary + Library AngularJSLibrary + + *** Test Cases *** + Search Through The Phone Catalog For Samsung Phones + Open Browser http://angular.github.io/angular-phonecat/step-14/app Chrome + Input Text //input Samsung + Click Link Samsung Galaxy Tab™ + Element Text Should Be css:phone-detail h1 Samsung Galaxy Tab™ +*If you get an "Unable to find root selector ..." error* then you should re-check +your root_selector. Note that unlike locators used with the SeleniumLibrary the +root_selector **should not** contain the css locator prefix. + +The second library option, ignore_implicit_angular_wait, is a flag which when +set to True the AngularJS Library will not wait for Angular $timeouts nor +$http calls to complete when finding elements by locator. The default value is +False. + +*If the application under test starts on a non angular page,* for example a +login page that is not angular which leads into an angular app, then one should +start with the implicit angular wait turned off. For example, + +.. code:: robotframework + + *** Settings *** + Library SeleniumLibrary + Library AngularJSLibrary ignore_implicit_angular_wait=True + + *** Test Cases *** + Login Into Non Angular Page + # ... Usage of the Waiting functionality ---------------------------------- -The AngularJS Library provides two types of waiting; a explicit keyword that one calls out or writes into their script and then an built-in implicit wait that automatically waits when using a locator strategy. Note currently the implicit wait is not invoked when using a web element as the locator. By default the implicit is turned on. This means as soon as you import the library you will have waiting enabled. +The AngularJS Library provides two types of waiting: a built-in implicit wait +that automatically waits when using a locator strategy and then an explicit +keyword that one calls out or writes into their script. In the tutorial and +examples above the scripts there aren't any expicit wait calls. Here instead +the script is relying on the implicit wait which by default is turned on. +This means as soon as you import the library you will have waiting enabled. -You may turn off the implicit wait by either using the :code:`Set Ignore Implicit Angular Wait` keyword with an argument of :code:`${True}` or when importing the library. For some testing situations, for example the initial login page is non-angular, one may want to start without the implicit waiting enabled. +This can be demostrated by importing the library with the implicit wait turned +off and using instead the library's explicit `Wait For Angular` keyword. -With the implicit wait functionality it is expected that most of the situations where waiting is needed will be handled "automatically" by this "hidden" implicit wait. Thus if one examined your test case they would not see many, if any, `Wait For Angular` keywords but instead would see actions keywords with no "waiting" keywords in between actions. There are though times when one needs to explicitly call out to wait for angular. For example when using a SeleniumLibrary keyword that does not use a locator strategy, like :code:`Alert Should Be Present` and :code:`Page should contain ...`, or if you use webelement. +.. code:: robotframework + *** Settings *** + Library SeleniumLibrary + Library AngularJSLibrary ignore_implicit_angular_wait=True + + *** Test Cases *** + Search Through The Phone Catalog For Samsung Phones + Open Browser http://angular.github.io/angular-phonecat/step-14/app Chrome + Wait For Angular + Input Text //input Samsung + Wait For Angular + Click Link Samsung Galaxy Tab™ + Wait For Angular + Element Text Should Be css:phone-detail h1 Samsung Galaxy Tab™ + +The expected and designed usage of this library is to use the implicit wait in +almost all cases. The reasoning is that it makes for a much cleaner and clearer +test case. Note currently the implicit wait is not invoked when using a web +element as the locator. + +In addition to the option to turn off the implicit wait on libray import, you +may turn it off using the :code:`Set Ignore Implicit Angular Wait` keyword with +an argument of :code:`${True}`. + +With the implicit wait functionality it is expected that most of the situations +where waiting is needed will be handled "automatically" by this "hidden" implicit +wait. Thus if one examined your test case they would not see many, if any, +`Wait For Angular` keywords but instead would see actions keywords with no +"waiting" keywords in between actions. There are though times when one needs to +explicitly call out to wait for angular. For example when using a SeleniumLibrary +keyword that does not use a locator strategy, like :code:`Alert Should Be Present` +and :code:`Page should contain ...`, or if you use webelement. + + +Understanding and verifying the angular waits +--------------------------------------------- +Although the waits seem like "Magic" they are not. Let's look into how the +waits are implimented and work to gain insight as to how they work. The waits, +both the implicit and explicit, poll what I call the "angular queue". +Technically it is checking that angular has "finished rendering and has no +outstanding $http or $timeout calls". It does this by checking the +`notifyWhenNoOutstandingRequests` function for AngularJS applications. For +Angular applications the library is checking the `isStable` function on the +Angular Testibility service. + +This can be seen within the log file by setting the loglevel to DEBUG or TRACE. +Rerunning the PhoneCat demo (:code:`robot --loglevel DEBUG demo_phonecat.robot`) +one should see in the log file + +.. code:: robotframework -Usage of the Angular Specific Locator Stratergies + 20:01:04.658 INFO Typing text 'Samsung' into text field '//input'. + 20:01:04.658 DEBUG POST http://localhost:50271/session/f75e7aaf5a00c717ae5e4af34a6ce516540611dae4b7f6079ce1a753c308cde2/execute/sync {"script": "...snip..."]} + 20:01:04.661 DEBUG http://localhost:50271 "POST /session/f75e7aaf5a00c717ae5e4af34a6ce516540611dae4b7f6079ce1a753c308cde2/execute/sync HTTP/1.1" 200 14 + 20:01:04.661 DEBUG Remote response: status=200 | data={"value":true} | headers=HTTPHeaderDict({'Content-Length': '14', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'}) + 20:01:04.661 DEBUG Finished Request + +For space reasons I snipped out the core script on the POST execute/sync line. +One should see these lines repeated several times over. This is the polling the +library is doing to see if the application is ready to test. It will repeat +this query till either it returns true or it will repeat till the "give up" +timeout. If it gives up, it will silently and gracefully fail continuing onto +the actions it was waiting to perform. It is important for the user of this +library to see and understand, at a basic level, this functionality. As the +primary usage are these implicit, and thus hidden, waits it is key to see how +to check the library is operating properly and when it is waiting. + +*When using the AngularJS Library, if all waits timeout then the AngularJS +Library may not wait properly with that application under test.* This, +recalling all previously outlined information, is telling you that the +Angular app is constantly busy. This can happen depending on how the angular +application is designed. It may also affect only a portion of the application +so it is important to test out various parts of the application. + +Further debugging techniques +---------------------------- +In addition to using the AngularJS Library, one can use the Browser's DevTools +as a way to test out and demonstrate the core operation of the library against +an application. To be clear, this is not library code but similar Javascript +code which one uses outside of robot to exhibit, to a dev team for example, +what the library is seeing when it querys the application. When viewing the +application under test open the DevTools, preferably under Chrome, and on the +Console tab type the following, + +If the application is built with AngularJS or Angular 1.x then the script is + +.. code:: javascript + + var callback = function () {console.log('*')} + var el = document.querySelector('[ng-app]'); + var h = setInterval(function w4ng() { + console.log('.'); + try { + angular.element(el).injector().get('$browser'). + notifyWhenNoOutstandingRequests(callback); + } catch (err) { + console.log(err.message); + callback(err.message); + } + }, 10); + +For Angular v2+ then the script is + +.. code:: javascript + + var callback = function () {console.log('*')} + var el = document.querySelector('material-docs-app'); + var h = setInterval(function w4ng() { + console.log('.'); + try { + var readyToTest = window.getAngularTestability(el).isStable(); + } catch (err) { + console.log(err.message); + callback(err.message); + } + if (!readyToTest) { + callback() + } else { + console.log('.'); + } + }, 10); + +This will display a :code:`.` when "stable". Otherwise it will show a :code:`*` +when "busy". To shut down the javascript interval and stop this script type on +the console prompt :code:`clearInterval(h);`. [Chrome Browser is preferred +because repeated output within its DevTools console will be displayed as a +single line with a count versus a new line for each output making it much +easier to see and read.] I have personally used this myself both in developing +this library as well as demonstrating to various Angular developers how a +design/implementation is blocking testability. + +Usage of the Angular Specific Locator Strategies ------------------------------------------------- The new locator strategies include @@ -112,7 +351,12 @@ Finally there is the strategy of find by repeat. This takes the general form of Getting Help ------------ -If you need help with AngularJSLibrary, SeleniumLibrary, or Robot Framework usage, please post to the `user group for Robot Framework `_. +If you need help with AngularJSLibrary, SeleniumLibrary, or Robot Framework usage, please reach out within the Robot Framework community `Slack <>`_ [`Invite to join community slack `_]. + + +Keyword Documentation +--------------------- +The keyword documentation can be found on the `Github project page `_. Testing @@ -126,3 +370,7 @@ References `SeleniumLibrary `_: Web testing library for Robot Framework `Protractor `_: E2E test framework for Angular apps + +`isStable reference `_ + +`Angular Testability service `_ From dfd6658a19c471fa67d029abcc6e27418128c847 Mon Sep 17 00:00:00 2001 From: Ed Manlove Date: Sun, 21 Aug 2022 20:54:18 -0400 Subject: [PATCH 2/5] Major revision of the documentation --- README.rst | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/README.rst b/README.rst index 0fa513a..23300c4 100644 --- a/README.rst +++ b/README.rst @@ -6,8 +6,8 @@ thus timing issue when testing Angular based websites. The library does this by providing first an implicit wait and, subsequently, an explicit keyword for waiting on angular. -About the support for various Angular versions and overall status of this library ---------------------------------------------------------------------------------- +About this library +------------------ The AngularJSLibrary, despite the name including JS, supports testing against both Angular 2.0+ (known as simply Angular) and Angular 1.0 (also known as Angular JS). @@ -188,23 +188,18 @@ off and using instead the library's explicit `Wait For Angular` keyword. Wait For Angular Element Text Should Be css:phone-detail h1 Samsung Galaxy Tab™ -The expected and designed usage of this library is to use the implicit wait in -almost all cases. The reasoning is that it makes for a much cleaner and clearer -test case. Note currently the implicit wait is not invoked when using a web -element as the locator. - -In addition to the option to turn off the implicit wait on libray import, you -may turn it off using the :code:`Set Ignore Implicit Angular Wait` keyword with -an argument of :code:`${True}`. - With the implicit wait functionality it is expected that most of the situations where waiting is needed will be handled "automatically" by this "hidden" implicit wait. Thus if one examined your test case they would not see many, if any, `Wait For Angular` keywords but instead would see actions keywords with no -"waiting" keywords in between actions. There are though times when one needs to +"waiting" keywords in between actions. There are times, though, when one needs to explicitly call out to wait for angular. For example when using a SeleniumLibrary keyword that does not use a locator strategy, like :code:`Alert Should Be Present` -and :code:`Page should contain ...`, or if you use webelement. +and :code:`Page should contain`, or if you use webelement. + +In addition to the option to turn off the implicit wait on library import, you +may turn it off using the :code:`Set Ignore Implicit Angular Wait` keyword with +an argument of :code:`${True}`. Understanding and verifying the angular waits From 384ce292c3b3cc2d1bdff52bc1557e1ef57b6180 Mon Sep 17 00:00:00 2001 From: Ed Manlove Date: Fri, 26 May 2023 11:22:14 -0400 Subject: [PATCH 3/5] Fixed link for Robot Framework community Slack --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 23300c4..0767ad9 100644 --- a/README.rst +++ b/README.rst @@ -346,7 +346,7 @@ Finally there is the strategy of find by repeat. This takes the general form of Getting Help ------------ -If you need help with AngularJSLibrary, SeleniumLibrary, or Robot Framework usage, please reach out within the Robot Framework community `Slack <>`_ [`Invite to join community slack `_]. +If you need help with AngularJSLibrary, SeleniumLibrary, or Robot Framework usage, please reach out within the Robot Framework community `Slack `_. Keyword Documentation From b5975a6d06c8d7fd61bdf274439780b19ce263d2 Mon Sep 17 00:00:00 2001 From: Ed Manlove Date: Fri, 26 May 2023 12:18:49 -0400 Subject: [PATCH 4/5] Updated notes on angular specific locator strategies --- README.rst | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.rst b/README.rst index 0767ad9..d7f1023 100644 --- a/README.rst +++ b/README.rst @@ -299,16 +299,16 @@ easier to see and read.] I have personally used this myself both in developing this library as well as demonstrating to various Angular developers how a design/implementation is blocking testability. -Usage of the Angular Specific Locator Strategies +Additional Angular Specific Locator Strategies ------------------------------------------------- -The new locator strategies include - -.. code:: - - binding= - model= - repeater= - +**Note: It is no longer recommended to use these angular specific locator +strategies. Although functional, the SeleniumLibrary locator strategies are more +than sufficient and in most cases easier to use then these strategies. For backward +compatablity reasons these will be left in but it is strongly recommended not to +use.** + +The library provides three new locator strategies, including ``binding``, +``model``, and ``repeater``. For example, you can look for an Angular ng-binding using From fe0c9f555ee1edf7d70de645aba32e6cd5119f98 Mon Sep 17 00:00:00 2001 From: Ed Manlove Date: Thu, 22 Feb 2024 21:30:22 -0500 Subject: [PATCH 5/5] Clarrifying the status of the AngularJSLibrary It has been noted that some feel this library is no longer "useful" as there have been very little changes of late. Instead it is because this is mature and stable library providing a very specific functionality, provide it well, and has very little need for change. Thus I am updating the metadata on this project to reflect this reality. I think I may need to say as such within the project documentation but that can come in another commit. --- setup.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/setup.py b/setup.py index 57aa0a2..afd9efa 100644 --- a/setup.py +++ b/setup.py @@ -1,8 +1,8 @@ -"""An AngularJS extension to Robotframework's Selenium2Library +"""An AngularJS/Angular extension to Robotframework's SeleniumLibrary See: http://robotframework.org/ -https://github.com/Selenium2Library/robotframework-angularjs +https://github.com/MarketSquare/robotframework-angularjs """ from setuptools import setup, find_packages @@ -17,20 +17,21 @@ setup( name='robotframework-angularjs', - version='0.0.11dev1', - description="""An AngularJS extension to Robotframework's Selenium2Library""", + version='1.0.0', + description="""An AngularJS/Angular extension to Robotframework's SeleniumLibrary""", long_description=long_description, long_description_content_type='text/x-rst', - url='https://github.com/Selenium2Library/robotframework-angularjs', + url='https://github.com/MarketSquare/robotframework-angularjs', author='Zephraph, Ed Manlove', - author_email='zephraph@gmail.com, devPyPlTw@verizon.net', + author_email='emanlove@verizon.net', license='Apache License 2.0', classifiers=[ - 'Development Status :: 3 - Alpha', + 'Development Status :: 6 - Mature', 'Framework :: Robot Framework', 'License :: OSI Approved :: Apache Software License', 'Operating System :: OS Independent', 'Programming Language :: Python', + 'Programming Language :: Python :: 3', 'Topic :: Software Development :: Testing', ], keywords='robotframework testing testautomation angular selenium webdriver',