Program.cs
using Datafication.Core.Data;
using Datafication.Extensions.Connectors.CsvConnector;
var sales = await DataBlock.Connector.LoadCsvAsync("sales.csv");
var result = sales
.Where("region", "North America", ComparisonOperator.Equals)
.Compute("profit_margin", "profit / revenue")
.Where("profit_margin", 0.25, ComparisonOperator.GreaterThan)
.GroupByAggregate("product_category", "revenue",
AggregationType.Sum, "total_revenue")
.Sort(SortDirection.Descending, "total_revenue");
using Verso;
using Verso.Abstractions;
using Verso.Extensions;
// Embed the same engine the notebook runs on
var extensionHost = new ExtensionHost();
await extensionHost.LoadBuiltInExtensionsAsync();
var scaffold = new Scaffold(new NotebookModel(), extensionHost, filePath: null);
scaffold.InitializeSubsystems();
scaffold.AddCell("code", language: "csharp", source: "var greeting = \"hello\";");
scaffold.AddCell("code", language: "csharp", source: "greeting.ToUpper()");
await scaffold.ExecuteAllAsync();
// One variable store, shared by every kernel
scaffold.Variables.Set("threshold", 0.95);
using Motus.Testing.MSTest;
using static Motus.Assertions.Expect;
[MotusTestClass]
public class SearchTests : MotusTestBase
{
[TestMethod]
public async Task SearchReturnsResults()
{
var page = await Context.NewPageAsync();
await page.GotoAsync("https://example.com");
await page.Locator("input[name='q']").FillAsync("motus automation");
await page.Locator("button[type='submit']").ClickAsync();
await That(page.Locator(".results")).ToBeVisibleAsync();
}
}