New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

The Community Blog is a personal opinion of community members and by no means the official standpoint of DNN Corp or DNN Platform. This is a place to express personal thoughts about DNNPlatform, the community and its ecosystem. Do you have useful information that you would like to share with the DNN Community in a featured article or blog? If so, please contact .

The use of the Community Blog is covered by our Community Blog Guidelines - please read before commenting or posting.

DNN Automation UI Testing with F# (ATFS) - Part 1

Introduction to DNN F# Framework 

This is the first article is a series of articles on how to use the F# automation Framework to write UI tests and WEB API tests. This first blog will introduce the framework and how to run it to test your Platform site.



Refer to this other blog if you like to understand the history of this project.

In the previous years DNN has developed a testing framework for automating DNN Platform application testing. The framework uses F# language (which is one of the .NET languages) and utilizes a few other open source libraries for this; of these: Canopy ( and Selenium (

The framework is called ATFS which stands for Automation Testing F#. To use the ATFS framework you need to know how to write F# code and get accustomed with the Canopy library syntax. It is advised that you visit website for this purpose. Also, it will be helpful if you have some knowledge about Selenium, but not mandatory.



To get your system ready for ATFS you need to have the following software installed:

  • .NET Framework 4.6.1 or higher
  • Visual Studio 2015 (any edition; Community, Pro, etc.) or higher
  • Visual F# 4.0 extension for Visual Studio
  • Visual F# Power Tools (optional but helpful for maintaining coding standards)

Getting Stared

To start using ATFS you must:

  • Use Visual Studio to browse to the cloned folder and locate the solution file “FSharpFramework.sln” (under ATFS subfolder) then open it. You will see a screen similar to this.

  • Open “Config.yaml” file and change the line
    DevTestsOnly: False
    DevTestsOnly: True

  • Run the solution by pressing F5 and you will see a command window opens with few lines of code and another Chrome browser window opens. The browser window will be maximized. The screen will look something like this.

  • Afterwards, press the [Enter] key and both windows will close and you will be back to Visual Studio.

If you have reached this point and seen the above screens, then this validates that you have got your ATFS up and running correctly. At this point we didn’t run any tests in the framework. In the next sections I will tell you how to run pre-existing test in the framework.

Running ATFS for your site

WARNING: DO NOT run this against your production site because it will create users and pages, install modules, and many other actions that you don't want to appear in a production site; run against test sites only.

To point ATFS to target your site, you need to edit the “Config.yaml” file as follows:

  • Change the “SiteAlias”  to point to your test site
  • Setup the “HostUserName”, “DefaultPassword”, and “HostDisplayName” to those of a super user account in your site
  • Make sure the “DoInstallation” is set to “False”
  • Set the “DevQualifier” to the same value set in the “web.config” of your test site (e.g., the <add name="SqlDataProvider" … objectQualifier="dnn_" … /> element)
  • Change the “Browser” to target the browser of your choce from the supported ones. We recommend either “chrome” of “ff” for best results.
  • Change or make sure the following lines are set exactly as shown:

DevTestsOnly: False
CoverageTests: False
BvtTests: True
P1ALL: False 

  • If you need a more complete set of tests, then change the last entry above to “P1ALL: True”

Now compile and run. If your changes were made properly, the application will start, load a browser, and start running the tests. The tests will run for a long time depending on the choices you made above and the speed of your test machine and the site you are testing. In the end, after about 10 to 20 minutes depending on the speed of your machine, you will see the results which are similar to this:



In this blog, I explained in brief how ATFS works and how to target your site for UI testing. In the next blog, I will explain the various configuration elements of the “Config.yaml” file and how they affect running the tests. In another blog will show you how to write your own UI tests.


Below are a few references for F# and the various libraries used for creating the ATFS framework plus other F# sites that might be helpful:


There are currently no comments, be the first to post one.

Comment Form

Only registered users may post comments.


Aderson Oliveira (22)
Alec Whittington (11)
Alessandra Davies (3)
Alex Shirley (10)
Andrew Hoefling (3)
Andrew Nurse (30)
Andy Tryba (1)
Anthony Glenwright (5)
Antonio Chagoury (28)
Ash Prasad (37)
Ben Schmidt (1)
Benjamin Hermann (25)
Benoit Sarton (9)
Beth Firebaugh (12)
Bill Walker (36)
Bob Kruger (5)
Bogdan Litescu (1)
Brian Dukes (2)
Brice Snow (1)
Bruce Chapman (20)
Bryan Andrews (1)
cathal connolly (55)
Charles Nurse (163)
Chris Hammond (213)
Chris Paterra (55)
Clint Patterson (108)
Cuong Dang (21)
Daniel Bartholomew (2)
Daniel Mettler (181)
Daniel Valadas (48)
Dave Buckner (2)
David Poindexter (12)
David Rodriguez (3)
Dennis Shiao (1)
Doug Howell (11)
Erik van Ballegoij (30)
Ernst Peter Tamminga (80)
Francisco Perez Andres (17)
Geoff Barlow (12)
George Alatrash (12)
Gifford Watkins (3)
Gilles Le Pigocher (3)
Ian Robinson (7)
Israel Martinez (17)
Jan Blomquist (2)
Jan Jonas (3)
Jaspreet Bhatia (1)
Jenni Merrifield (6)
Joe Brinkman (274)
John Mitchell (1)
Jon Henning (14)
Jonathan Sheely (4)
Jordan Coopersmith (1)
Joseph Craig (2)
Kan Ma (1)
Keivan Beigi (3)
Kelly Ford (4)
Ken Grierson (10)
Kevin Schreiner (6)
Leigh Pointer (31)
Lorraine Young (60)
Malik Khan (1)
Matt Rutledge (2)
Matthias Schlomann (16)
Mauricio Márquez (5)
Michael Doxsey (7)
Michael Tobisch (3)
Michael Washington (202)
Miguel Gatmaytan (3)
Mike Horton (19)
Mitchel Sellers (40)
Nathan Rover (3)
Navin V Nagiah (14)
Néstor Sánchez (31)
Nik Kalyani (14)
Oliver Hine (1)
Patricio F. Salinas (1)
Patrick Ryan (1)
Peter Donker (54)
Philip Beadle (135)
Philipp Becker (4)
Richard Dumas (22)
Robert J Collins (5)
Roger Selwyn (8)
Ruben Lopez (1)
Ryan Martinez (1)
Sacha Trauwaen (1)
Salar Golestanian (4)
Sanjay Mehrotra (9)
Scott McCulloch (1)
Scott Schlesier (11)
Scott Wilkinson (3)
Scott Willhite (97)
Sebastian Leupold (80)
Shaun Walker (237)
Shawn Mehaffie (17)
Stefan Cullmann (12)
Stefan Kamphuis (12)
Steve Fabian (31)
Steven Fisher (1)
Tony Henrich (3)
Torsten Weggen (3)
Tycho de Waard (4)
Vicenç Masanas (27)
Vincent Nguyen (3)
Vitaly Kozadayev (6)
Will Morgenweck (40)
Will Strohl (180)
William Severance (5)
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out