Post by sascanagl on Jul 10, 2019 21:02:08 GMT
In response to queries from source code contributor Dawn (2004-2006) originally from SXC Health Solutions regarding the state of SAFS...
The SAFS framework as "old-timers" knew it remains intact. However, development for SAS Institute was brought wholly in-house in 2017 and has not been distributed externally as of this writing. There have been lots of enhancements on how it can be used. For example, while SAFS supports reading and executing test tables (Cycle, Suite, Step) as before, there are other ways to get those test records to the executing Engines.
In addition to the Robot/RobotJ (Robot/Functional Tester) Engines previously available, we added support for using SmartBear’s TestComplete and also Selenium as available Engines. So SAFS is the framework you could be used on top of Selenium. Having Selenium as an Engine just as Robot and RobotJ were Engines before.
An additional enhancement is that you CAN instead develop tests in Eclipse/Java using what we call JSAFS and our specialized enhancement for Selenium called SeleniumPlus.
We have also added Cucumber support, and other types of support for have SAFS/SeleniumPlus run other kinds of tests (Junit, etc..).
While not currently available externally, we are currently developing additional enhancements we call SeleniumPlus A.I.. This exploits the Cucumber Gherkin language processor with SAFS/SeleniumPlus Step Definitions that do not require App Map stored Recognition Strings as long as the web app being tested conforms to HTML5 Accessibility standards. We find stuff “on the fly” just as screen readers and other accessibility tools would.
For those wishing to explore/demonstrate the 2017 SAFS Framework or SeleniumPlus there is plenty of functionality within these frameworks that do not require a running Engine. So doing a proof of concept to show the basics of how the framework works is possible without using any specific testing engine like Rational Robot, Functional Tester, TestComplete, or Selenium. This is demonstrated most simply in SAFS by running the SAFS “runTIDTest.bat” which simply verifies the framework is installed and running correctly without any engine. The same would be true for the SeleniumPlus framework. You can demonstrate that it works by running a simple no-op test that does not launch a browser (more on that below). There are plenty of ways to invoke Driver Commands and other features that do not require an Engine. This includes using and playing with the SAFS STAF services for SAFSMAPS, SAFSVARS, SAFSLOGS, and SAFSINPUT.
SAFSDEV:
safsdev.github.io/Default.htm
github.com/safsdev
safsdev.freeforums.net/
So much has changed since that last 2017 release, that it may or may not work readily on today’s Win 10 machines. I haven’t gone back and tried to see how it would work on today’s machines. But you can see in the forums we have tried to keep certain Win10 issues and solutions documented even after we stopped external releases.
Traditional SAFS:
github.com/SAFSDEV/Core
github.com/SAFSDEV/Core/releases
TestComposer:
github.com/SAFSDEV/Test_Composer
This is a test IDE used to develop SAFS tests that conform to the text-based test record format with test tables. This is what SAS use(d) internally for test table development before the implementation of JSAFS support and Eclipse for SeleniumPlus.
Java-based SeleniumPlus:
safsdev.github.io/selenium/doc/SeleniumPlus-Welcome.html
github.com/SAFSDEV/SeleniumPlus-Plugin
github.com/SAFSDEV/SeleniumPlus-Plugin/releases
Of concern on both SAFS and SeleniumPlus is the Selenium support in 2017 was for Selenium 2.46. We are currently at Selenium 3.14 primarily by necessity because of the changes in how Selenium works with modern browsers using WebDrivers. It is, unfortunately, unlikely these releases will work as-is with today’s browsers using Selenium. SeleniumPlus uses Eclipse as the test development environment instead of text-based tables or TestComposer. This will work as a SAFS testing framework as-is, but attempting to launch and “see” modern browsers with older Selenium will not work.
There is another key difference between SeleniumPlus and SAFS. By default, SeleniumPlus does not need and does not use external STAF. Everything runs in a single process space. We have created what we call JSTAFEmbedded for the situation in which the Driver (SeleniumPlus) and the Engine (Selenium) can all reside in the same Java JVM. Our SAFS Services for STAF are all present in the same JVM with the Driver and the Engine. Everybody thinks they are talking to an external STAF, but they are not. It is all embedded in the same JVM. As I said, this is done by default. If, however, the tester needs to bring in additional external test engines, they can change the INI file settings and resort to traditional external STAF usage communicating with and using external processes and services.
We can provide technical guidance on using or getting any of these things to work for you. We can also provide code snippets/guidance for certain areas to help bring things up-to-date. But we cannot provide wholesale copies of the current sourcecode without seeking appropriate approvals for opensource licensing.
The SAFS framework as "old-timers" knew it remains intact. However, development for SAS Institute was brought wholly in-house in 2017 and has not been distributed externally as of this writing. There have been lots of enhancements on how it can be used. For example, while SAFS supports reading and executing test tables (Cycle, Suite, Step) as before, there are other ways to get those test records to the executing Engines.
In addition to the Robot/RobotJ (Robot/Functional Tester) Engines previously available, we added support for using SmartBear’s TestComplete and also Selenium as available Engines. So SAFS is the framework you could be used on top of Selenium. Having Selenium as an Engine just as Robot and RobotJ were Engines before.
An additional enhancement is that you CAN instead develop tests in Eclipse/Java using what we call JSAFS and our specialized enhancement for Selenium called SeleniumPlus.
We have also added Cucumber support, and other types of support for have SAFS/SeleniumPlus run other kinds of tests (Junit, etc..).
While not currently available externally, we are currently developing additional enhancements we call SeleniumPlus A.I.. This exploits the Cucumber Gherkin language processor with SAFS/SeleniumPlus Step Definitions that do not require App Map stored Recognition Strings as long as the web app being tested conforms to HTML5 Accessibility standards. We find stuff “on the fly” just as screen readers and other accessibility tools would.
For those wishing to explore/demonstrate the 2017 SAFS Framework or SeleniumPlus there is plenty of functionality within these frameworks that do not require a running Engine. So doing a proof of concept to show the basics of how the framework works is possible without using any specific testing engine like Rational Robot, Functional Tester, TestComplete, or Selenium. This is demonstrated most simply in SAFS by running the SAFS “runTIDTest.bat” which simply verifies the framework is installed and running correctly without any engine. The same would be true for the SeleniumPlus framework. You can demonstrate that it works by running a simple no-op test that does not launch a browser (more on that below). There are plenty of ways to invoke Driver Commands and other features that do not require an Engine. This includes using and playing with the SAFS STAF services for SAFSMAPS, SAFSVARS, SAFSLOGS, and SAFSINPUT.
SAFSDEV:
safsdev.github.io/Default.htm
github.com/safsdev
safsdev.freeforums.net/
So much has changed since that last 2017 release, that it may or may not work readily on today’s Win 10 machines. I haven’t gone back and tried to see how it would work on today’s machines. But you can see in the forums we have tried to keep certain Win10 issues and solutions documented even after we stopped external releases.
Traditional SAFS:
github.com/SAFSDEV/Core
github.com/SAFSDEV/Core/releases
TestComposer:
github.com/SAFSDEV/Test_Composer
This is a test IDE used to develop SAFS tests that conform to the text-based test record format with test tables. This is what SAS use(d) internally for test table development before the implementation of JSAFS support and Eclipse for SeleniumPlus.
Java-based SeleniumPlus:
safsdev.github.io/selenium/doc/SeleniumPlus-Welcome.html
github.com/SAFSDEV/SeleniumPlus-Plugin
github.com/SAFSDEV/SeleniumPlus-Plugin/releases
Of concern on both SAFS and SeleniumPlus is the Selenium support in 2017 was for Selenium 2.46. We are currently at Selenium 3.14 primarily by necessity because of the changes in how Selenium works with modern browsers using WebDrivers. It is, unfortunately, unlikely these releases will work as-is with today’s browsers using Selenium. SeleniumPlus uses Eclipse as the test development environment instead of text-based tables or TestComposer. This will work as a SAFS testing framework as-is, but attempting to launch and “see” modern browsers with older Selenium will not work.
There is another key difference between SeleniumPlus and SAFS. By default, SeleniumPlus does not need and does not use external STAF. Everything runs in a single process space. We have created what we call JSTAFEmbedded for the situation in which the Driver (SeleniumPlus) and the Engine (Selenium) can all reside in the same Java JVM. Our SAFS Services for STAF are all present in the same JVM with the Driver and the Engine. Everybody thinks they are talking to an external STAF, but they are not. It is all embedded in the same JVM. As I said, this is done by default. If, however, the tester needs to bring in additional external test engines, they can change the INI file settings and resort to traditional external STAF usage communicating with and using external processes and services.
We can provide technical guidance on using or getting any of these things to work for you. We can also provide code snippets/guidance for certain areas to help bring things up-to-date. But we cannot provide wholesale copies of the current sourcecode without seeking appropriate approvals for opensource licensing.