anchor.diff:  let mutable (actions : Action list) = [];
   let mutable (browser : IWebDriver) = null;
   let mutable chromedir = @"c:\"
  +let mutable elementTimeout = 3.0
  +let mutable compareTimeout = 3.0
  +let mutable pageTimeout = 10.0
   
   let start (b : string) =    
       //for chrome you need to download chromedriver.exe from http://code.google.com/p/chromedriver/wiki/GettingStarted
  
positive.code: let contains (value1 : string) (value2 : string) =
      logAction "contains"
      if (value2.Contains(value1) <> true) then
          failwith (System.String.Format("contains check failed.  {0} does not contain {1}", value2, value1));
      ()
  
  let describe (text : string) =
      System.Console.WriteLine(text);
      ()
negative.code: let read (cssSelector : string) =    
      try
          logAction "read"
          let element = find cssSelector elementTimeout
          if element.TagName = "input" then
              element.GetAttribute("value")
          else
              element.Text    
      with
          | ex -> failwith ex.Message
  
          
  let clear (cssSelector : string) = 
      logAction "clear"
      let element = find cssSelector elementTimeout
      element.Clear()
      
  let click (cssSelector : string) = 
      try
          logAction "click"
          let element = find cssSelector elementTimeout
          element.Click()
      with
          | ex -> failwith ex.Message
  
  let selected (cssSelector : string) = 
      logAction "selected"
      let element = find cssSelector elementTimeout
      if element.Selected = false then
          failwith (String.Format("element selected failed, {0} not selected.", cssSelector));    
      
  
  let deselected (cssSelector : string) =     
          logAction "deselected"
          let element = find cssSelector elementTimeout
          if element.Selected then
              failwith (String.Format("element deselected failed, {0} selected.", cssSelector));    
  
  let title _ = browser.Title
  
  let quit _ = 
      logAction "quit"
      browser.Quit()    
      browser <- null
      ()
  
  let equals value1 value2 =
      logAction "equals"
      if (value1 <> value2) then
          failwith (String.Format("equality check failed.  expected: {0}, got: {1}", value1, value2));
      ()
  
  let ( == ) cssSelector value =
      logAction "equals"
      let wait = new WebDriverWait(browser, TimeSpan.FromSeconds(compareTimeout))
      try
          wait.Until(fun _ -> (read cssSelector) = value) |> ignore
      with
          | :? TimeoutException -> failwith (String.Format("equality check failed.  expected: {0}, got: {1}", value, (read cssSelector)));
          | ex -> failwith ex.Message
  
  let notequals value1 value2 =
      logAction "notequals"
      if (value1 = value2) then
          failwith (String.Format("notequals check failed.", value1, value2));
      ()
  
  let ( != ) cssSelector value =
      logAction "notequals"
      let wait = new WebDriverWait(browser, TimeSpan.FromSeconds(compareTimeout))
      try
          wait.Until(fun _ -> (read cssSelector) <> value) |> ignore
      with
          | :? TimeoutException -> failwith (String.Format("not equals check failed.  expected NOT: {0}, got: {1}", value, (read cssSelector)));
          | ex -> failwith ex.Message
  
  let listed (cssSelector : string) value =
      logAction "list"
      let wait = new WebDriverWait(browser, TimeSpan.FromSeconds(compareTimeout))
      try        
          wait.Until(fun _ -> (
                                  let elements = findMany cssSelector elementTimeout
                                  elements |> Seq.exists(fun element -> element.Text = value)
                              )
                    ) |> ignore
      with
          | :? TimeoutException -> failwith (String.Format("cant find {0} in list {1}", value, cssSelector));
          | ex -> failwith ex.Message
  
  let ( *= ) (cssSelector : string) value =
      listed cssSelector value
  
  let notlisted (cssSelector : string) value =
      logAction "notlisted"
      let wait = new WebDriverWait(browser, TimeSpan.FromSeconds(compareTimeout))
      try
          wait.Until(fun _ -> (
                                  let elements = findMany cssSelector elementTimeout
                                  elements |> Seq.exists(fun element -> element.Text = value) = false
                              )
                    ) |> ignore
      with
          | :? TimeoutException -> failwith (String.Format("found {0} in list {1}, expected not to", value, cssSelector));
          | ex -> failwith ex.Message
  
  let ( *!= ) (cssSelector : string) value =
      notlisted cssSelector value
  