If you are into C# take on an issue from https://github.com/o2platform/FluentSharp/issues
If you are into NodeJS take on an issue from https://github.com/o2platform/FluentNode/issues
If you are into Chrome or Selenium take on an issue from https://github.com/O2Platform/nwr/issues
Thanks :)
A personal blog about: transforming Web Application Security into an 'Application Visibility' engine, the OWASP O2 Platform, Application/Data interoperability and a lot more
Showing posts with label FluentSharp. Show all posts
Showing posts with label FluentSharp. Show all posts
Thursday, 8 January 2015
Saturday, 23 August 2014
"How to execute a String as code during run-time?" and other O2/FluentSharp issues
I just added an answer for How to execute a String as code during run-time? which you might find interesting.
Here are a number of other issues also opened during the past week
- Create documentation page to point to Git Issues with good answers
- Document 5.5 unzip issue that prevents dll loading
- Handle the download of corrupted or non-zip files to to Tool_API.cs
- Add beter CodePlex version support to Tool_API.cs
- Add Tool_API.cs code to main FluentSharp code
- Add Native support to NuGet dependencies
I'm starting to use GitHub Issues to create 'documentation' for the O2 Platform, which I think might work quite well (GitHub Issues support Markdown and easy upload of images via copy-n-paste)
Labels:
FluentSharp,
O2 Platform
Thursday, 31 July 2014
FluentSharp July 2014 Update - Better README.MD page, list of issues to help and NuGet Packages
I just cleaned up the main FluentSharp README.md file (with lots of info) and added a number of issues to:
As you can see by the commit activity (graphs/contributors and commits/master) there has been quite a number of API updates and fixes (for example there is quite a lot of great new stuff on the WatiN IE Web Automation front, including native support for Cassini).
Although I have not created a separate O2 Platform exe release, you can already get all the APIs from the NuGet packages:
- https://github.com/o2platform/FluentSharp/issues
- https://github.com/o2platform/FluentSharp_Fork.WatiN/issues
- https://github.com/o2platform/O2.Platform.Scripts/issues
As you can see by the commit activity (graphs/contributors and commits/master) there has been quite a number of API updates and fixes (for example there is quite a lot of great new stuff on the WatiN IE Web Automation front, including native support for Cassini).
Although I have not created a separate O2 Platform exe release, you can already get all the APIs from the NuGet packages:
- FluentSharp.CoreLib
- FluentSharp.REPL
- FluentSharp.NUnit
- FluentSharp.WatiN
- FluentSharp.WatiN.NUnit
- FluentSharp.CassiniDev.NUnit
- FluentSharp.NGit
- FluentSharp.WinForms
- FluentSharp.Moq
Labels:
FluentSharp,
O2 Platform
Friday, 18 July 2014
Using TDD, how I found that NUnit TestFixtureSetUp and TestFixtureTearDown (from base classes) are not called when a Constructor exists (in the main class)
Just hit an interesting issue which I'm sure there is a good explanation for, but It caught me off guard.
I was working on this NUnit test called Test_Tbot_User_View
I was working on this NUnit test called Test_Tbot_User_View
Labels:
FluentSharp,
NCrunch,
NUnit,
TeamMentor
Wednesday, 16 July 2014
From NUnit AppDomain, accessing properties and invoking methods on 'Serializable MarshalByRefObject TeamMentor objects' (hosted on Cassini's AppDomain)
After How fast do the 'NUnit-Cassini-driven' tests execute (on a full TM instance) it was time to start accessing internal TeamMentor objects from the NUnit AppDomain.
The main change I did was to add the [Serializable] and the MarshalByRefObject to the TeamMentor (TM) objects that I want to consume (i.e. access data and invoke methods) from NUnit tests.
Here is an example of what it looks like in one of the main TM's data classes:
The main change I did was to add the [Serializable] and the MarshalByRefObject to the TeamMentor (TM) objects that I want to consume (i.e. access data and invoke methods) from NUnit tests.
Here is an example of what it looks like in one of the main TM's data classes:
Labels:
FluentSharp,
NUnit,
TeamMentor
Tuesday, 15 July 2014
How fast do the 'NUnit-Cassini-driven' tests execute (on a full TM instance)
A question I received after posting The moment I was able to serialize objects across an ASP.NET AppDomain and an NUnit AppDomain was 'Ok, that is is interesting, but how fast is it?'
That is actually one of the 'THE' key questions, since if we want to be able to create NUnit tests that use newly created Cassini-driven websites (i.e. a new Cassini server per test or test class) they have to be fast.
Ok, so how 'fast' is fast?
Well, in my book, that is either less than 1 second (for quick tests) or 10 seconds (for more complex setups).
More than that, and it is not practical to run those tests from NCrunch (or even manually via Resharper/NUnit-GUIs)
The good news is that (as you can see below), I was able to execute an 'NUnit-Cassini-driven' test in:
That is actually one of the 'THE' key questions, since if we want to be able to create NUnit tests that use newly created Cassini-driven websites (i.e. a new Cassini server per test or test class) they have to be fast.
Ok, so how 'fast' is fast?
Well, in my book, that is either less than 1 second (for quick tests) or 10 seconds (for more complex setups).
More than that, and it is not practical to run those tests from NCrunch (or even manually via Resharper/NUnit-GUIs)
The good news is that (as you can see below), I was able to execute an 'NUnit-Cassini-driven' test in:
- 6 sec: via NCrunch (consuming a TM instance with 0 libraries)
- 7 sec: via ReSharper (consuming a TM instance with 3 libraries)
Labels:
Cassini,
FluentSharp,
NCrunch,
NUnit,
TeamMentor
The moment I was able to serialize objects across an ASP.NET AppDomain and an NUnit AppDomain
As you can see at the end of How to debug an Cassini hosted website and the UnitTest that uses WatiN to automate that hosted website, although I was now able to start cassini in the current NUnit process, I was still not able to have direct/native access to the running objects of that website.
Basically what I wanted was to be able to access programatically the live TeamMentor (TM) objects from an NUnit test (note that both are running on separate AppDomains).
Not only this would make some of the tests I want to write possible, it would allow me to much faster setup specific test environments (for example cases when I need a number of users to already exist in TM).
The key problem is that after starting the 'TM website running inside Cassini, triggered from the NUnit test' I was left with two AppDomains:
Basically what I wanted was to be able to access programatically the live TeamMentor (TM) objects from an NUnit test (note that both are running on separate AppDomains).
Not only this would make some of the tests I want to write possible, it would allow me to much faster setup specific test environments (for example cases when I need a number of users to already exist in TM).
The key problem is that after starting the 'TM website running inside Cassini, triggered from the NUnit test' I was left with two AppDomains:
- The NUnit AppDomain running the NUnit Test and the Cassini Server
- The Cassini AppDomain running the TM website
In practice what I wanted to do is to be able to access and edit one of TM objects (for example TeamMentor.Schemas.TM_Config from the NUnit test).
And that is exactly what I was able to do :)
And that is exactly what I was able to do :)
Labels:
FluentSharp,
NCrunch,
NUnit,
TeamMentor
Friday, 11 July 2014
How to debug an Cassini hosted website and the UnitTest that uses WatiN to automate that hosted website
One of the cool new capabilities that I'm using when writing QA Automation scripts for the latest version of TeamMentor, is the https://www.nuget.org/packages/FluentSharp.CassiniDev which allows the execution of an an 'in memory' version of Cassini (hosting the full TeamMentor website) in the same process as the Unit Test driving the IE automation of the hosted website (using FluentSharp.WatiN)
In practice, what this means is that the UnitTests are being executed in the same process as the main TeamMentor Website. This something that I have been wanting to have for ages, and the key capability I gained from it was the ability to debug both live website and UnitTest in the same session.
Lets set it in action.
In practice, what this means is that the UnitTests are being executed in the same process as the main TeamMentor Website. This something that I have been wanting to have for ages, and the key capability I gained from it was the ability to debug both live website and UnitTest in the same session.
Lets set it in action.
Labels:
FluentSharp,
TeamMentor,
WatiN
Saturday, 28 September 2013
Script to Git Clone 13 repositories in order to have all TeamMentor Libraries in one folder
Part of the push for the 3.4 release of TeamMentor, I wanted to have a copy of all TeamMentor libraries locally (there are 13 libraries on the 3.4 release).
Since O2 Platform’s FluentSharp has native Git support, I was able to do create the clones using this script (note how simple it is to create a clone from a GitHub repo):
Since O2 Platform’s FluentSharp has native Git support, I was able to do create the clones using this script (note how simple it is to create a clone from a GitHub repo):
Labels:
FluentSharp,
Git,
TeamMentor
Tuesday, 23 July 2013
Version of O2Platform 5.3 released
I just pushed to GitHub a new version of the O2 Platform which has a massive Namespace rename and a number of new features
You can download the stand-alone exe from here: https://o2platform.googlecode.com/files/O2%20Platform%20-%20Main%20O2%20Gui%20v5.3.exe
The NuGet packages can be consumed from http://www.nuget.org/packages?q=fluentSharp
And the code is at https://github.com/o2platform (with for example the FluentSharp commits available at: https://github.com/o2platform/FluentSharp/commits/master )
Let me know your views on it or if you find probs running it
Thanks
Labels:
FluentSharp,
O2 Platform
Saturday, 25 May 2013
Using FluentSharp API’s to refactor C# TreeView sample
While reading reddit’s r/csharp I saw the Can anyone help me answer a quick question about treeview? thread which asked this question:
Labels:
FluentSharp,
O2 Platform
Friday, 5 April 2013
Running Customized C# code loaded from TeamMentor’s UserData repository
A really powerful feature of TeamMentor 3.3. is its ability to run CSharp Scripts included in the mapped UserData repository (script execution is powered by O2 Platform's FluentSharp APIs).
This blog post shows how it works
This blog post shows how it works
Labels:
FluentSharp,
O2 Platform,
REPL,
TeamMentor
Sunday, 10 February 2013
Using ContractAttributes to let ReSharper engine understand null checking methods
One of my favorite Extension Methods in FluentSharp is the .isNull() which will return null if the object it is used on is null.
Labels:
FluentSharp
Saturday, 9 February 2013
What does the .html() FluentSharp Extension Method does
Well it gets the HTML code of a particular URL :)
And it does the same thing as the FluentSharp BCL's .GET() extension method.
And it does the same thing as the FluentSharp BCL's .GET() extension method.
Labels:
FluentSharp,
O2 Platform,
REPL
Saturday, 2 February 2013
Real-Time Write to WebBrowser showing WCF REST API page, using HttpContent.Response, from C# REPL Script
In this post I will show a powerful technique for ASP.NET Debugging/Programming, where the Web C# REPL that I recently added to TeamMentor is triggered from a WCF REST API, in such a way that the HttpContext can be programmed in real-time, with the added bonus that the HttpContext.Response OutputStream stays open (and can be written to multiple times).
It all starts with a new TeamMentor REST API method called ‘/admin/scripts/{name}’ :
It all starts with a new TeamMentor REST API method called ‘/admin/scripts/{name}’ :
Labels:
FluentSharp,
REPL,
TeamMentor
Friday, 1 February 2013
Using CSharp Web REPL from TeamMentor Control Panel
I needed to do some live debugging on TeamMentor, so I just added a simpler version of the CSharp-REPL Web to it.
To access it, go to the TeamMentor's Control Panel, and click on the C# REPL link:
To access it, go to the TeamMentor's Control Panel, and click on the C# REPL link:
Labels:
FluentSharp,
REPL,
TeamMentor
Wednesday, 21 November 2012
Use FluentSharp to create ToolStrips items (buttons, textbox, checkboxes) with icons
Based on the 215 Tango Library Icons added to FluentsSharp.BCL , here is how to use the FluentSharp.BCL APIs to easily create ToolStrips
Labels:
FluentSharp,
O2 Platform
Friday, 19 October 2012
Monday, 15 October 2012
Web C# REPL now supports Snippet Save (and better logging)
Just added a couple features to the Web C# REPL:
- Ability to save (and share) a snippet (just click on save button and copy the Url)
- REST API to load snippet
- Page to view today's scripts: http://csharp-repl.apphb.com/Pages/Todays_Scripts.html
- Page to view O2's Logs: http://csharp-repl.apphb.com/Pages/O2_Logs.html
- Auto-email (me) on Script save (for debugging purposes)
This is what the default page looks like:
Labels:
FluentSharp,
O2 Platform,
REPL
Sunday, 14 October 2012
FluenSharp Script - Create a form with 4 Sides (TreeViews)
Here is a simple O2/FluentSharp that creates a simple Form with 4 side-panels (each with a TreeView inside)
Code as Gist:
Code as Gist:
Labels:
FluentSharp
Subscribe to:
Posts (Atom)

