/// <summary> /// Run all tests with the <c>PageTestAttribute</c>. /// </summary> /// <param name="source">The source page object.</param> /// <param name="methodFilter">The test method filter predicate.</param> /// <param name="pageTestClassFilter">The page test class filter predicate.</param> /// <returns>This page object.</returns> public static IPageObject TestBottomUp(this IPageObject source, Predicate <MethodInfo> methodFilter = null, Predicate <IPageObjectTests> pageTestClassFilter = null) { Trace.WriteLine("Run tests for " + source.GetType().FullName); // run tests for every child foreach (var child in source.Children()) { child.TestBottomUp(methodFilter, pageTestClassFilter); } // run tests for this page object source.Test(methodFilter, pageTestClassFilter); return(source); }