Skip to content

Instantly share code, notes, and snippets.

@stirno

stirno/Features.md

Last active Aug 29, 2015
Embed
What would you like to do?
Changes for FluentAutomation v3.0

FluentAutomation v3.0 Changelog

######Multi-browser support with I.Find

Change from Func<Element> to ElementProxy

######New configuration syntax

Config
  .WaitOnAllActions(true)
  .WaitOnAllExpects(true)

Config.Configure(settings);

######New settings

WaitOnAllAsserts
OnAssertFailed
ScreenshotPrefix // filename prefix for screenshots, useful in local-scoped config blocks

######Changed settings

ExpectFailedCallback -> OnExpectFailed
WaitOnAllCommands -> WaitOnAllActions
DefaultWaitUntilTimeout -> WaitUntilTimeout
DefaultWaitUntilThreadSleep -> WaitUntilInterval
DefaultWaitTimeout -> WaitTimeout

WaitUntilTimeout Default value 30s -> 5s

######Renamed items

INativeActionSyntaxProvider -> IActionSyntaxProvider
ExpectSyntaxProvider -> AssertSyntaxProvider
ExpectProvider -> AssertProvider
IExpectProvider -> IAssertProvider

######Removed

Settings (replaced by FluentConfig/FluentSettings)
IActionProvider

######New Methods

I.Switch.Window()
I.Switch.Frame()
I.Click(Alert.OK);
I.Click(Alert.Cancel);
I.Expect.Text("Wat").In(Alert.Text);
I.Enter.Text("Wut").In(Alert.Text);

I.Expect.Visible("#id");
I.Assert.Visible("#id");
I.Expect.Not.Visible("#id");
I.Assert.Not.Visible("#id");

I.Expect.Attribute("name").On("#id");
I.Assert.Attribute("name").On("#id");
I.Expect.Attribute("name", "value").On("#id");
I.Assert.Attribute("name", "value").On("#id");
I.Expect.Attribute("name").Not.On("#id");
I.Assert.Attribute("name").Not.On("#id");
I.Expect.Attribute("name", "value").Not.On("#id");
I.Assert.Attribute("name", "value").Not.On("#id");

I.Expect.Css("name").On("#id");
I.Assert.Css("name").On("#id");
I.Expect.Css("name", "value").On("#id");
I.Assert.Css("name", "value").On("#id");
I.Expect.Css("name").Not.On("#id");
I.Assert.Css("name").Not.On("#id");
I.Expect.Css("name", "value").Not.On("#id");
I.Assert.Css("name", "value").Not.On("#id");

I.Expect.Not.Exists("#id");
I.Assert.Not.Exists("#id");
I.Expect.Not.Url("http://google.com/");
I.Assert.Not.Url("http://google.com/");
I.Expect.Not.True(() => false);
I.Assert.Not.True(() => false);
I.Expect.Not.False(() => true);
I.Assert.Not.False(() => true);
I.Expect.Not.Throws() => "".ToString());
I.Assert.Not.Throws(() => "".ToString());

I.Expect.Text("wat").Not.In("#id");
I.Assert.Text("wat").Not.In("#id");
I.Expect.Value("wat").Not.In("#id");
I.Assert.Value("wat").Not.In("#id");
I.Expect.Class("red").Not.On("#id");
I.Assert.Class("red").Not.On("#id");
I.Expect.Count(1).Not.Of("li");
I.Assert.Count(1).Not.Of("li");

######Local-scoped config values

With
    .WaitUntil(1)
    .WindowSize(800, 600)
.Then
    .Wait(3)
    .Assert
        .Not.Visible("#hiddenthing")
        .Not.Exists("#halp");

######Other

EnableStickySession can be called 'blindly' and will not reset sessions in progress. Sessions now properly dispose of browser instances when the AppDomain is unloaded (test runner shutdown, generally).

Exception messages have been cleaned up a bit. Stack traces will stop at user-level test code instead of showing several levels of FluentAutomation abstractions.

Symbols will be uploaded to SymbolSource.org again regularly for the 3.0 series.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment