Automated functional tests using Watin and MSpec

I am conducting a spike for a couple of evening on the way we might automate our functional tests at Jobping

I started with Watin and MSpec and the MSpec excellent plugin for ReSharper 5 which gives the following great outputs directly from Visual Studio


After some discussion with Alexander Groß (Thanks for your help ;) to gain some knowhow about MSpec I finally managed to have some automated functional tests running like this:

public class when_user_search_using_keywords : WebBaseSpec
    const string Keywords = "C#";
    static SearchScreenObject searchScreenObject;
    static ResultScreenObject resultScreenObject;

    Establish context = () =>
            searchScreenObject = new SearchScreenObject(Browser);
            resultScreenObject = new ResultScreenObject(Browser);

    Because of = () => searchScreenObject.Search(Keywords);

    It should_direct_user_to_results_page = () =>
        Browser.Uri.Route().ShouldMapTo<HomeController>(x =>
            x.Search("AU", new SearchRequest { Keywords = Keywords}));

    It should_fill_search_textbox_with_keywords_entered_by_user = () =>

I think it talks for itself!

Remarks to note:

  1. SearchScreenObject and ResultScreenObject represents an isolation layer between my tests and objects that are present on the web pages. This helps in the case you decide to change an id of an element
  2. I use MvcContrib ShouldMap to ensure that the browser navigates to the correct destination page which add another isolation layer and let me change my URL without impacting my tests

It is really funny to see the browser opening and clicking automatically, typing texts…

Hopefully, at the end this will replace our smoke test document and quite some time of manual testing.


Fundamental Laws from David S. Platt on MSDN Magazine

Yesterday I got the new issue of MSDN Magazine in my mailbox and as often I started to go quickly around it to get an overview of what kind of subject’s it talks about. And as often I end up at the last page’s article which is the first I am reading.

This time David S. Platt is writing about “Fundamental Laws” which start like that

Whenever I find a program or Web site that sucks, it’s invariably because the developer or designer forgot the user’s goals and started embellishing the program for its own sake.

This reminded me a discussion I had a year and a half ago at Christmas time when my brother was back from Australia. We were discussing about what became Jobping.

And as you can read fom Jobping  press release, “Jobping launches niche job website listing Microsoft skilled vacancies”, it is one of our priority:

More features and functions based on user feedback and requirements will be implemented quickly as Jobping takes an organic and user oriented approach to product development.

From David

Your software has zero value in and of itself. Nothing. Nada. Zero point zero zero. The only value it ever has or ever will have is the degree to which it enhances the happiness of your user in some way

So when you develop software you’d better understand and listen to the problem of your users to delight them and enhance their happiness.


IntelliJ 9 and changeset

Day after day I find little gems in IntelliJ 9 that just make me more productive and give me more time to deal with the real interesting things.

Today for example I had to change a web.xml file which I was said that I should take care not to commit because if this file would go to our customer than we would have a problem.

We are currently using JIRA and Greenhopper and I use the excellent plugin Atlassian Connector for IntelliJ IDEA

My working process, which is not rocket science but needs a bit of discipline, is the following:

  1. Before starting a change I check that there is a task in our JIRA
  2. Then I get this task and create a changeset in IntelliJ
  3. Starting from now, everything I change is logged into that changeset
  4. If I need to work shortly on another task I get another task from JIRA and create another changeset and start to log my work on that new changeset
  5. When it is time to commit I just commit the changeset. Done

Back to my web.xml issue, I had to take care not to commit it. I knew it from the start that I will have an issue if I commit that file.

So immediately, having the information,  I created a new changeset named “Do not commit” and added the web.xml change to that changeset.


I was then on the safe side! Why? Because after working almost the whole morning and changing hundred of files I didn’t had to remember about that possible issue because the tool will remind me that. What a mind refresher!

If I had not done that then I would have to first remind that I don’t have to commit that file and then I would have to browse the hundreds of file searching for the one I have to commit and the other one.

So help yourself work on your toolset and become a more productive developer!


IntelliJ 9 CSS editor

Today at Innoveo Solutions  I work on CSS and XHTML for our Skye® product.

I am using JetBrains  IntelliJ 9 since a couple of weeks now and I enjoy it very much.

I am always searching for tools which make me more productive in my daily work. IntelliJ 9 is such a tool. And today I have used a feature that helped me a lot.

I started with a CSS I received with that definition


If you take care you will see the underline under margin and background, when you place the cursor over you get the following info


Then you can press ALT-Enter to get an action that you can execute; “optimize margin properties”


So when you execute the action for margin and background you get the following optimized result


You might read more about the CSS capabilities of JetBrains IntelliJ 9 on the following blog.


Certified ScrumMaster

As you might have read on Didier’s blog or even on Innoveo’s blog I passed the ScrumMaster’s certification end of last year. Yeah I know I am late to post this ;-)

I must say that the course held  by Jimi Fosdick was interesting and brought me some new idea.

What is Scrum? (ScrumAlliance definition)

Scrum: A team-based framework to develop complex systems and products.

Scrum is an iterative, incremental framework for developing any product or managing any work. It allows teams to deliver a potentially shippable set of functionality every iteration, providing the agility needed to respond to rapidly changing requirements.

The Scrum framework constantly challenges its users to focus on improvement, and its Sprints provide the stability to address the ever-changing needs that occur in any project.

These characteristics have led to Scrum becoming the most popular method in the world of agile software development.

At Innoveo we are using Scrum to build up our product Skye®, a front end solution for insurances.

At Jobping we are also using Scrum in a distributed way to build up, our new job posting web site aimed specifically at job seekers and employers who work with Microsoft technologies.


I would like to thank Didier and Nick, first to give me the possibility to attend the ScrumMaster course and certification  and for all the interesting discussions we had on change management in an organization, Scrum, Agile, Software Engineering…

Certification was one thing, it was a step, having the possibility to live the framework in an organization is absolutely another thing which is made of lots of other steps.


Jobping Open Source Short URLs Service

We at Jobping use different Open Source projects so we thought it would be nice to participate by giving back also to that eco-system. This is why we realized Jobping Open Source Short URLs Service 

The project goal was to have our own branded short URL service:
As we leverage Twitter to have an easy way for job seekers to follow the different published offers, we decided that having our own branded url would be nice. Job posters now get an extra few characters for each tweet and readers can rely on our short URL as a trusted domain that leads them to our main site

Our shortener,, only accepts long URLs that are in our domain.

As it is an Open Source project hosted on Codeplex, anybody can get its own deployed.

Jobping URL shortener works like other URL shortener services, it takes a long URL and makes it really short. When a user requests one of our short URLs e.g the URL shortener service will redirect the user to the long URL. It issues a standard 301 redirect, an efficient and search engine friendly method for redirecting the user to the long URL location.

If you want more technical details you might read more on the blog of Mark : “Announcing: JP URL Shortener. Open source MVC.NET 2 C#

Stay tuned, we will be contributing more projects just like this to the open source community.


Press Release - Jobping launches niche job website listing Microsoft skilled vacancies

Press Release

Sydney, Australia - April 22, 2010 - Last week, Jobping, a new job posting web site aimed specifically at job seekers and employers who work with Microsoft technologies, was released into public beta.

Jobping currently focuses on the Australian market and aims to bring a better quality of candidate to a posted vacancy via a niche, industry targeted approach.

The site is unique, user friendly and streamlined when compared to the larger job post boards. For instance, publishing is done in a couple of clicks and the job is instantly broadcast through Twitter, Facebook and job indexing sites such as Indeed and CareerJet. Recruiters are also able to add their company Twitter feed to a job post in order to cross sell other vacancies all in one place.

From a job seeker point of view Jobping searching works just like today's search engines with specific job filtering options. Job seekers also benefit by being kept up to date in a variety of ways including through Rss, Internet Explorer Web Slice, Twitter or Facebook. Similarly, job seekers are able to apply for a position using their LinkedIn profile, saving time and eliminating the need to keep two separate resumes up to date and they may optionally attach a traditional pdf or word resume.

More features and functions based on user feedback and requirements will be implemented quickly as Jobping takes an organic and user oriented approach to product development.

Jobping will remain free during the beta period which will continue for 3-6 months. Advertisers utilising the site during the beta period will be rewarded through special discounts once the pricing structure is introduced.

Visit us on !

The team behind Jobping is: 

  • Mark Kemper - Microsoft Certified Professional Developer .Net Framework 2.0 Enterprise Applications Developer.
  • Ally Colqhoun    - Graphical designer front end developer.
  • Mathieu Kempé - Former Visual C# Microsoft MVP (2004-2006).
  • Laurent Kempé - ASP.NET Microsoft MVP since 2001.

301 Redirect on IIS, from domain to

I got an email the other day from Didier, than a message on my facebook page from Antoine about an issue with my blog and my .NET portal which were not redirecting correctly from and to the ones with www in front.

So I fired up IIS manager and fixed this using the following easy way:

  1. Create a web site for the one without the www; e.g., configure the web site content directory to the path of the one you have in
  2. Configure the web site to listen on, if needed

  3. Then on the Home directory you will have to set the redirection url using ‘When connecting to this resource the content should come from’ set to ‘A redirection to a URL"’.  And check ‘A permanent redirection for this resource’.


You are done! And you can control that using a tool like HttpWatch Professional and for sure from your browser!



VS 2010 and .NET 4 statistics

Soma just published some info about Microsoft “dogfooding” VS 2010 and .NET 4

There are some interesting statistics and explanation of what Soma think were critical factors to success.

Here are some statistics from our instance of TFS towards the end of the project:

  • 3,668 active users in a 14 day period
  • 896 builds per month
  • 828,978 work items, including bugs, tasks and other work that we track
  • 25,170,852 source code files under version control
  • 15.5 terabytes of data

12,000 people inside Microsoft running VS 2010 for their day-to-day development

employees installed pre-release versions of .NET Framework 4 to their desktops more than 35,000 times and MSDN deployed pre-release .NET Framework 4 on 112 servers



If you are an old (even not so old) video game player, do you remember those old days of fun with pac man, space invaders, frogger… You have to watch this fantastic video!

New York invasion by 8-bits creatures !
PIXELS is Patrick Jean' latest short film, shot on location in New York.

envoyé par onemoreprod. - Films courts et animations.

It is a fantastic video! Thanks for the pointer Bertrand.

About Laurent

Laurent Kempé

Laurent Kempé is the editor, founder, and primary contributor of Tech Head Brothers, a French portal about Microsoft .NET technologies.

He is currently employed by Innoveo Solutions since 10/2007 as a Senior Solution Architect, certified Scrum Master and Founding Member.

Founder, owner and Managing Partner of Jobping, which provides a unique and efficient platform for connecting Microsoft skilled job seekers with employers using Microsoft technologies.

Laurent was awarded Most Valuable Professional (MVP) by Microsoft from April 2002 to April 2012.

JetBrains Academy Member
Certified ScrumMaster
My status


This is a Flickr badge showing public photos and videos from Laurent Kempé. Make your own badge here.

Month List

Page List