mirror of
https://github.com/microsoft/playwright.git
synced 2025-06-26 21:40:17 +00:00
chore: make csharp library codegen more csharp like (#28663)
This commit is contained in:
parent
9c845365f7
commit
44c3ad5ceb
@ -53,7 +53,7 @@ export class CSharpLanguageGenerator implements LanguageGenerator {
|
||||
generateAction(actionInContext: ActionInContext): string {
|
||||
const action = this._generateActionInner(actionInContext);
|
||||
if (action)
|
||||
return action + '\n';
|
||||
return action;
|
||||
return '';
|
||||
}
|
||||
|
||||
@ -64,7 +64,7 @@ export class CSharpLanguageGenerator implements LanguageGenerator {
|
||||
let pageAlias = actionInContext.frame.pageAlias;
|
||||
if (this._mode !== 'library')
|
||||
pageAlias = pageAlias.replace('page', 'Page');
|
||||
const formatter = new CSharpFormatter(8);
|
||||
const formatter = new CSharpFormatter(this._mode === 'library' ? 0 : 8);
|
||||
|
||||
if (action.name === 'openPage') {
|
||||
formatter.add(`var ${pageAlias} = await context.NewPageAsync();`);
|
||||
@ -184,13 +184,9 @@ export class CSharpLanguageGenerator implements LanguageGenerator {
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
class Program
|
||||
{
|
||||
public static async Task Main()
|
||||
{
|
||||
using var playwright = await Playwright.CreateAsync();
|
||||
await using var browser = await playwright.${toPascal(options.browserName)}.LaunchAsync(${formatObject(options.launchOptions, ' ', 'BrowserTypeLaunchOptions')});
|
||||
var context = await browser.NewContextAsync(${formatContextOptions(options.contextOptions, options.deviceName)});`);
|
||||
using var playwright = await Playwright.CreateAsync();
|
||||
await using var browser = await playwright.${toPascal(options.browserName)}.LaunchAsync(${formatObject(options.launchOptions, ' ', 'BrowserTypeLaunchOptions')});
|
||||
var context = await browser.NewContextAsync(${formatContextOptions(options.contextOptions, options.deviceName)});`);
|
||||
formatter.newLine();
|
||||
return formatter.format();
|
||||
}
|
||||
@ -220,9 +216,11 @@ export class CSharpLanguageGenerator implements LanguageGenerator {
|
||||
}
|
||||
|
||||
generateFooter(saveStorage: string | undefined): string {
|
||||
const storageStateLine = saveStorage ? `\n await context.StorageStateAsync(new BrowserContextStorageStateOptions\n {\n Path = ${quote(saveStorage)}\n });\n` : '';
|
||||
return `${storageStateLine} }
|
||||
}\n`;
|
||||
const offset = this._mode === 'library' ? '' : ' ';
|
||||
let storageStateLine = saveStorage ? `\n${offset}await context.StorageStateAsync(new BrowserContextStorageStateOptions\n${offset}{\n${offset} Path = ${quote(saveStorage)}\n${offset}});\n` : '';
|
||||
if (this._mode !== 'library')
|
||||
storageStateLine += ` }\n}\n`;
|
||||
return storageStateLine;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -46,7 +46,7 @@ test.describe('cli codegen', () => {
|
||||
page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Submit")).click()`);
|
||||
|
||||
expect.soft(sources.get('C#')!.text).toContain(`
|
||||
await page.GetByRole(AriaRole.Button, new() { Name = "Submit" }).ClickAsync();`);
|
||||
await page.GetByRole(AriaRole.Button, new() { Name = "Submit" }).ClickAsync();`);
|
||||
|
||||
expect(message.text()).toBe('click');
|
||||
});
|
||||
@ -144,14 +144,14 @@ test.describe('cli codegen', () => {
|
||||
.setPosition(250, 250));`);
|
||||
|
||||
expect(sources.get('C#')!.text).toContain(`
|
||||
await page.Locator("canvas").ClickAsync(new LocatorClickOptions
|
||||
{
|
||||
Position = new Position
|
||||
{
|
||||
X = 250,
|
||||
Y = 250,
|
||||
},
|
||||
});`);
|
||||
await page.Locator("canvas").ClickAsync(new LocatorClickOptions
|
||||
{
|
||||
Position = new Position
|
||||
{
|
||||
X = 250,
|
||||
Y = 250,
|
||||
},
|
||||
});`);
|
||||
expect(message.text()).toBe('click 250 250');
|
||||
});
|
||||
|
||||
@ -188,7 +188,7 @@ test.describe('cli codegen', () => {
|
||||
page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Submit")).click()`);
|
||||
|
||||
expect.soft(sources.get('C#')!.text).toContain(`
|
||||
await page.GetByRole(AriaRole.Button, new() { Name = "Submit" }).ClickAsync();`);
|
||||
await page.GetByRole(AriaRole.Button, new() { Name = "Submit" }).ClickAsync();`);
|
||||
|
||||
expect(message.text()).toBe('click');
|
||||
});
|
||||
@ -249,7 +249,7 @@ test.describe('cli codegen', () => {
|
||||
await page.locator("#input").fill(\"John\")`);
|
||||
|
||||
expect(sources.get('C#')!.text).toContain(`
|
||||
await page.Locator("#input").FillAsync(\"John\");`);
|
||||
await page.Locator("#input").FillAsync(\"John\");`);
|
||||
|
||||
expect(message.text()).toBe('John');
|
||||
});
|
||||
@ -283,7 +283,7 @@ test.describe('cli codegen', () => {
|
||||
await page.locator("#input").fill(\"てすと\")`);
|
||||
|
||||
expect(sources.get('C#')!.text).toContain(`
|
||||
await page.Locator("#input").FillAsync(\"てすと\");`);
|
||||
await page.Locator("#input").FillAsync(\"てすと\");`);
|
||||
|
||||
expect(message.text()).toBe('てすと');
|
||||
});
|
||||
@ -366,7 +366,7 @@ test.describe('cli codegen', () => {
|
||||
await page.get_by_role("textbox").press("Shift+Enter")`);
|
||||
|
||||
expect(sources.get('C#')!.text).toContain(`
|
||||
await page.GetByRole(AriaRole.Textbox).PressAsync("Shift+Enter");`);
|
||||
await page.GetByRole(AriaRole.Textbox).PressAsync("Shift+Enter");`);
|
||||
|
||||
expect(messages[0].text()).toBe('press');
|
||||
});
|
||||
@ -474,7 +474,7 @@ test.describe('cli codegen', () => {
|
||||
await page.locator("#checkbox").check()`);
|
||||
|
||||
expect(sources.get('C#')!.text).toContain(`
|
||||
await page.Locator("#checkbox").CheckAsync();`);
|
||||
await page.Locator("#checkbox").CheckAsync();`);
|
||||
|
||||
expect(message.text()).toBe('true');
|
||||
});
|
||||
@ -544,7 +544,7 @@ test.describe('cli codegen', () => {
|
||||
await page.locator("#checkbox").uncheck()`);
|
||||
|
||||
expect(sources.get('C#')!.text).toContain(`
|
||||
await page.Locator("#checkbox").UncheckAsync();`);
|
||||
await page.Locator("#checkbox").UncheckAsync();`);
|
||||
|
||||
expect(message.text()).toBe('false');
|
||||
});
|
||||
@ -576,7 +576,7 @@ test.describe('cli codegen', () => {
|
||||
await page.locator("#age").select_option("2")`);
|
||||
|
||||
expect(sources.get('C#')!.text).toContain(`
|
||||
await page.Locator("#age").SelectOptionAsync(new[] { "2" });`);
|
||||
await page.Locator("#age").SelectOptionAsync(new[] { "2" });`);
|
||||
|
||||
expect(message.text()).toBe('2');
|
||||
});
|
||||
@ -617,7 +617,7 @@ test.describe('cli codegen', () => {
|
||||
await page.locator(\"#age\").select_option(\"2\")`);
|
||||
|
||||
expect(sources.get('C#')!.text).toContain(`
|
||||
await page.Locator(\"#age\").SelectOptionAsync(new[] { \"2\" });`);
|
||||
await page.Locator(\"#age\").SelectOptionAsync(new[] { \"2\" });`);
|
||||
|
||||
expect(message.text()).toBe('2');
|
||||
});
|
||||
@ -656,10 +656,10 @@ test.describe('cli codegen', () => {
|
||||
page1 = await page1_info.value`);
|
||||
|
||||
expect.soft(sources.get('C#')!.text).toContain(`
|
||||
var page1 = await page.RunAndWaitForPopupAsync(async () =>
|
||||
{
|
||||
await page.GetByRole(AriaRole.Link, new() { Name = "link" }).ClickAsync();
|
||||
});`);
|
||||
var page1 = await page.RunAndWaitForPopupAsync(async () =>
|
||||
{
|
||||
await page.GetByRole(AriaRole.Link, new() { Name = "link" }).ClickAsync();
|
||||
});`);
|
||||
|
||||
expect(popup.url()).toBe('about:blank');
|
||||
});
|
||||
@ -696,7 +696,7 @@ test.describe('cli codegen', () => {
|
||||
page.get_by_text("link").click()`);
|
||||
|
||||
expect.soft(sources.get('C#')!.text).toContain(`
|
||||
await page.GetByText("link").ClickAsync();`);
|
||||
await page.GetByText("link").ClickAsync();`);
|
||||
|
||||
expect(page.url()).toContain('about:blank#foo');
|
||||
});
|
||||
@ -741,9 +741,9 @@ test.describe('cli codegen', () => {
|
||||
.setButton(MouseButton.MIDDLE));`);
|
||||
|
||||
expect(sources.get('C#')!.text).toContain(`
|
||||
await page.GetByText("Click me").ClickAsync(new LocatorClickOptions
|
||||
{
|
||||
Button = MouseButton.Middle,
|
||||
});`);
|
||||
await page.GetByText("Click me").ClickAsync(new LocatorClickOptions
|
||||
{
|
||||
Button = MouseButton.Middle,
|
||||
});`);
|
||||
});
|
||||
});
|
||||
|
||||
@ -40,7 +40,7 @@ test.describe('cli codegen', () => {
|
||||
page = await context.new_page()`);
|
||||
|
||||
expect(sources.get('C#')!.text).toContain(`
|
||||
var page = await context.NewPageAsync();`);
|
||||
var page = await context.NewPageAsync();`);
|
||||
});
|
||||
|
||||
test('should contain second page', async ({ openRecorder, page }) => {
|
||||
@ -63,7 +63,7 @@ test.describe('cli codegen', () => {
|
||||
page1 = await context.new_page()`);
|
||||
|
||||
expect(sources.get('C#')!.text).toContain(`
|
||||
var page1 = await context.NewPageAsync();`);
|
||||
var page1 = await context.NewPageAsync();`);
|
||||
});
|
||||
|
||||
test('should contain close page', async ({ openRecorder, page }) => {
|
||||
@ -87,7 +87,7 @@ test.describe('cli codegen', () => {
|
||||
await page.close()`);
|
||||
|
||||
expect(sources.get('C#')!.text).toContain(`
|
||||
await page.CloseAsync();`);
|
||||
await page.CloseAsync();`);
|
||||
});
|
||||
|
||||
test('should not lead to an error if html gets clicked', async ({ page, openRecorder }) => {
|
||||
@ -132,7 +132,7 @@ test.describe('cli codegen', () => {
|
||||
await page.get_by_role("textbox").set_input_files(\"file-to-upload.txt\")`);
|
||||
|
||||
expect(sources.get('C#')!.text).toContain(`
|
||||
await page.GetByRole(AriaRole.Textbox).SetInputFilesAsync(new[] { \"file-to-upload.txt\" });`);
|
||||
await page.GetByRole(AriaRole.Textbox).SetInputFilesAsync(new[] { \"file-to-upload.txt\" });`);
|
||||
});
|
||||
|
||||
test('should upload multiple files', async ({ page, openRecorder, browserName, asset, isLinux }) => {
|
||||
@ -163,7 +163,7 @@ test.describe('cli codegen', () => {
|
||||
await page.get_by_role("textbox").set_input_files([\"file-to-upload.txt\", \"file-to-upload-2.txt\"]`);
|
||||
|
||||
expect(sources.get('C#')!.text).toContain(`
|
||||
await page.GetByRole(AriaRole.Textbox).SetInputFilesAsync(new[] { \"file-to-upload.txt\", \"file-to-upload-2.txt\" });`);
|
||||
await page.GetByRole(AriaRole.Textbox).SetInputFilesAsync(new[] { \"file-to-upload.txt\", \"file-to-upload-2.txt\" });`);
|
||||
});
|
||||
|
||||
test('should clear files', async ({ page, openRecorder, browserName, asset, isLinux }) => {
|
||||
@ -194,7 +194,7 @@ test.describe('cli codegen', () => {
|
||||
await page.get_by_role("textbox").set_input_files([])`);
|
||||
|
||||
expect(sources.get('C#')!.text).toContain(`
|
||||
await page.GetByRole(AriaRole.Textbox).SetInputFilesAsync(new[] { });`);
|
||||
await page.GetByRole(AriaRole.Textbox).SetInputFilesAsync(new[] { });`);
|
||||
});
|
||||
|
||||
test('should download files', async ({ page, openRecorder, server }) => {
|
||||
@ -262,15 +262,15 @@ test.describe('cli codegen', () => {
|
||||
download1 = await download1_info.value`);
|
||||
|
||||
expect.soft(sources.get('C#')!.text).toContain(`
|
||||
var download = await page.RunAndWaitForDownloadAsync(async () =>
|
||||
{
|
||||
await page.GetByRole(AriaRole.Link, new() { Name = "Download" }).ClickAsync();
|
||||
});`);
|
||||
var download = await page.RunAndWaitForDownloadAsync(async () =>
|
||||
{
|
||||
await page.GetByRole(AriaRole.Link, new() { Name = "Download" }).ClickAsync();
|
||||
});`);
|
||||
expect.soft(sources.get('C#')!.text).toContain(`
|
||||
var download1 = await page.RunAndWaitForDownloadAsync(async () =>
|
||||
{
|
||||
await page.GetByRole(AriaRole.Link, new() { Name = "Download" }).ClickAsync();
|
||||
});`);
|
||||
var download1 = await page.RunAndWaitForDownloadAsync(async () =>
|
||||
{
|
||||
await page.GetByRole(AriaRole.Link, new() { Name = "Download" }).ClickAsync();
|
||||
});`);
|
||||
});
|
||||
|
||||
test('should handle dialogs', async ({ page, openRecorder }) => {
|
||||
@ -310,14 +310,14 @@ test.describe('cli codegen', () => {
|
||||
await page.get_by_role("button", name="click me").click()`);
|
||||
|
||||
expect.soft(sources.get('C#')!.text).toContain(`
|
||||
void page_Dialog_EventHandler(object sender, IDialog dialog)
|
||||
{
|
||||
Console.WriteLine($\"Dialog message: {dialog.Message}\");
|
||||
dialog.DismissAsync();
|
||||
page.Dialog -= page_Dialog_EventHandler;
|
||||
}
|
||||
page.Dialog += page_Dialog_EventHandler;
|
||||
await page.GetByRole(AriaRole.Button, new() { Name = "click me" }).ClickAsync();`);
|
||||
void page_Dialog_EventHandler(object sender, IDialog dialog)
|
||||
{
|
||||
Console.WriteLine($\"Dialog message: {dialog.Message}\");
|
||||
dialog.DismissAsync();
|
||||
page.Dialog -= page_Dialog_EventHandler;
|
||||
}
|
||||
page.Dialog += page_Dialog_EventHandler;
|
||||
await page.GetByRole(AriaRole.Button, new() { Name = "click me" }).ClickAsync();`);
|
||||
|
||||
});
|
||||
|
||||
@ -355,8 +355,8 @@ test.describe('cli codegen', () => {
|
||||
page1 = await context.new_page()
|
||||
await page1.goto("about:blank?foo")`);
|
||||
expect(sources.get('C#')!.text).toContain(`
|
||||
var page1 = await context.NewPageAsync();
|
||||
await page1.GotoAsync("about:blank?foo");`);
|
||||
var page1 = await context.NewPageAsync();
|
||||
await page1.GotoAsync("about:blank?foo");`);
|
||||
} else {
|
||||
expect(sources.get('JavaScript')!.text).toContain(`
|
||||
const page1Promise = page.waitForEvent('popup');
|
||||
@ -541,7 +541,7 @@ test.describe('cli codegen', () => {
|
||||
await page.locator("#textarea").fill(\"Hello'\\"\`\\nWorld\")`);
|
||||
|
||||
expect(sources.get('C#')!.text).toContain(`
|
||||
await page.Locator("#textarea").FillAsync(\"Hello'\\"\`\\nWorld\");`);
|
||||
await page.Locator("#textarea").FillAsync(\"Hello'\\"\`\\nWorld\");`);
|
||||
|
||||
expect(message.text()).toBe('Hello\'\"\`\nWorld');
|
||||
});
|
||||
|
||||
@ -49,7 +49,7 @@ test.describe('cli codegen', () => {
|
||||
page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Submit")).first().click();`);
|
||||
|
||||
expect.soft(sources.get('C#')!.text).toContain(`
|
||||
await page.GetByRole(AriaRole.Button, new() { Name = "Submit" }).First.ClickAsync();`);
|
||||
await page.GetByRole(AriaRole.Button, new() { Name = "Submit" }).First.ClickAsync();`);
|
||||
|
||||
expect(message.text()).toBe('click1');
|
||||
});
|
||||
@ -84,7 +84,7 @@ test.describe('cli codegen', () => {
|
||||
page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Submit")).nth(1).click();`);
|
||||
|
||||
expect.soft(sources.get('C#')!.text).toContain(`
|
||||
await page.GetByRole(AriaRole.Button, new() { Name = "Submit" }).Nth(1).ClickAsync();`);
|
||||
await page.GetByRole(AriaRole.Button, new() { Name = "Submit" }).Nth(1).ClickAsync();`);
|
||||
|
||||
expect(message.text()).toBe('click2');
|
||||
});
|
||||
@ -133,7 +133,7 @@ test.describe('cli codegen', () => {
|
||||
await page.frame_locator("#frame1").get_by_text("Hello1").click()`);
|
||||
|
||||
expect(sources.get('C#')!.text).toContain(`
|
||||
await page.FrameLocator("#frame1").GetByText("Hello1").ClickAsync();`);
|
||||
await page.FrameLocator("#frame1").GetByText("Hello1").ClickAsync();`);
|
||||
|
||||
|
||||
[sources] = await Promise.all([
|
||||
@ -154,7 +154,7 @@ test.describe('cli codegen', () => {
|
||||
await page.frame_locator("#frame1").frame_locator("iframe").get_by_text("Hello2").click()`);
|
||||
|
||||
expect.soft(sources.get('C#')!.text).toContain(`
|
||||
await page.FrameLocator("#frame1").FrameLocator("iframe").GetByText("Hello2").ClickAsync();`);
|
||||
await page.FrameLocator("#frame1").FrameLocator("iframe").GetByText("Hello2").ClickAsync();`);
|
||||
|
||||
|
||||
[sources] = await Promise.all([
|
||||
@ -175,7 +175,7 @@ test.describe('cli codegen', () => {
|
||||
await page.frame_locator("#frame1").frame_locator("iframe").frame_locator("iframe[name=\\"one\\"]").get_by_text("HelloNameOne").click()`);
|
||||
|
||||
expect.soft(sources.get('C#')!.text).toContain(`
|
||||
await page.FrameLocator("#frame1").FrameLocator("iframe").FrameLocator("iframe[name=\\"one\\"]").GetByText("HelloNameOne").ClickAsync();`);
|
||||
await page.FrameLocator("#frame1").FrameLocator("iframe").FrameLocator("iframe[name=\\"one\\"]").GetByText("HelloNameOne").ClickAsync();`);
|
||||
|
||||
[sources] = await Promise.all([
|
||||
recorder.waitForOutput('JavaScript', 'HelloNameAnonymous'),
|
||||
@ -195,7 +195,7 @@ test.describe('cli codegen', () => {
|
||||
await page.frame_locator("#frame1").frame_locator("iframe").frame_locator("iframe >> nth=2").get_by_text("HelloNameAnonymous").click()`);
|
||||
|
||||
expect.soft(sources.get('C#')!.text).toContain(`
|
||||
await page.FrameLocator("#frame1").FrameLocator("iframe").FrameLocator("iframe >> nth=2").GetByText("HelloNameAnonymous").ClickAsync();`);
|
||||
await page.FrameLocator("#frame1").FrameLocator("iframe").FrameLocator("iframe >> nth=2").GetByText("HelloNameAnonymous").ClickAsync();`);
|
||||
});
|
||||
|
||||
test('should generate frame locators with special characters in name attribute', async ({ page, openRecorder, server }) => {
|
||||
@ -223,7 +223,7 @@ test.describe('cli codegen', () => {
|
||||
await page.frame_locator("iframe[name=\\"foo\\\\<bar\\\\'\\\\\\"\\\\\`\\\\>\\"]").get_by_role("button", name="Click me").click()`);
|
||||
|
||||
expect.soft(sources.get('C#')!.text).toContain(`
|
||||
await page.FrameLocator("iframe[name=\\"foo\\\\<bar\\\\'\\\\\\"\\\\\`\\\\>\\"]").GetByRole(AriaRole.Button, new() { Name = "Click me" }).ClickAsync();`);
|
||||
await page.FrameLocator("iframe[name=\\"foo\\\\<bar\\\\'\\\\\\"\\\\\`\\\\>\\"]").GetByRole(AriaRole.Button, new() { Name = "Click me" }).ClickAsync();`);
|
||||
});
|
||||
|
||||
test('should generate frame locators with title attribute', async ({ page, openRecorder, server }) => {
|
||||
@ -377,7 +377,7 @@ test.describe('cli codegen', () => {
|
||||
await page.frame_locator("#frame1").get_by_role("button", name="Submit").click()`);
|
||||
|
||||
expect.soft(sources.get('C#')!.text).toContain(`
|
||||
await page.FrameLocator("#frame1").GetByRole(AriaRole.Button, new() { Name = "Submit" }).ClickAsync();`);
|
||||
await page.FrameLocator("#frame1").GetByRole(AriaRole.Button, new() { Name = "Submit" }).ClickAsync();`);
|
||||
});
|
||||
|
||||
test('should generate getByTestId', async ({ page, openRecorder }) => {
|
||||
@ -407,7 +407,7 @@ test.describe('cli codegen', () => {
|
||||
page.getByTestId("testid").click()`);
|
||||
|
||||
expect.soft(sources.get('C#')!.text).toContain(`
|
||||
await page.GetByTestId("testid").ClickAsync();`);
|
||||
await page.GetByTestId("testid").ClickAsync();`);
|
||||
|
||||
expect(message.text()).toBe('click');
|
||||
});
|
||||
@ -438,7 +438,7 @@ test.describe('cli codegen', () => {
|
||||
page.getByPlaceholder("Country").click()`);
|
||||
|
||||
expect.soft(sources.get('C#')!.text).toContain(`
|
||||
await page.GetByPlaceholder("Country").ClickAsync();`);
|
||||
await page.GetByPlaceholder("Country").ClickAsync();`);
|
||||
});
|
||||
|
||||
test('should generate getByAltText', async ({ page, openRecorder }) => {
|
||||
@ -467,7 +467,7 @@ test.describe('cli codegen', () => {
|
||||
page.getByAltText("Country").click()`);
|
||||
|
||||
expect.soft(sources.get('C#')!.text).toContain(`
|
||||
await page.GetByAltText("Country").ClickAsync();`);
|
||||
await page.GetByAltText("Country").ClickAsync();`);
|
||||
});
|
||||
|
||||
test('should generate getByLabel', async ({ page, openRecorder }) => {
|
||||
@ -496,7 +496,7 @@ test.describe('cli codegen', () => {
|
||||
page.getByLabel("Country").click()`);
|
||||
|
||||
expect.soft(sources.get('C#')!.text).toContain(`
|
||||
await page.GetByLabel("Country").ClickAsync();`);
|
||||
await page.GetByLabel("Country").ClickAsync();`);
|
||||
});
|
||||
|
||||
test('should generate getByLabel without regex', async ({ page, openRecorder }) => {
|
||||
@ -525,7 +525,7 @@ test.describe('cli codegen', () => {
|
||||
page.getByLabel("Coun\\"try").click()`);
|
||||
|
||||
expect.soft(sources.get('C#')!.text).toContain(`
|
||||
await page.GetByLabel("Coun\\"try").ClickAsync();`);
|
||||
await page.GetByLabel("Coun\\"try").ClickAsync();`);
|
||||
});
|
||||
|
||||
test('should consume pointer events', async ({ page, openRecorder }) => {
|
||||
|
||||
@ -33,16 +33,12 @@ test('should print the correct imports and context options', async ({ browserNam
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
class Program
|
||||
using var playwright = await Playwright.CreateAsync();
|
||||
await using var browser = await playwright.${capitalize(browserName)}.LaunchAsync(new BrowserTypeLaunchOptions
|
||||
{
|
||||
public static async Task Main()
|
||||
{
|
||||
using var playwright = await Playwright.CreateAsync();
|
||||
await using var browser = await playwright.${capitalize(browserName)}.LaunchAsync(new BrowserTypeLaunchOptions
|
||||
{
|
||||
${launchOptions(channel)}
|
||||
});
|
||||
var context = await browser.NewContextAsync();`;
|
||||
${launchOptions(channel)}
|
||||
});
|
||||
var context = await browser.NewContextAsync();`;
|
||||
await cli.waitFor(expectedResult);
|
||||
});
|
||||
|
||||
@ -58,33 +54,33 @@ test('should print the correct context options for custom settings', async ({ br
|
||||
'--target=csharp',
|
||||
emptyHTML]);
|
||||
const expectedResult = `
|
||||
using var playwright = await Playwright.CreateAsync();
|
||||
await using var browser = await playwright.${capitalize(browserName)}.LaunchAsync(new BrowserTypeLaunchOptions
|
||||
{
|
||||
${launchOptions(channel)}
|
||||
Proxy = new ProxySettings
|
||||
{
|
||||
Server = "http://myproxy:3128",
|
||||
},
|
||||
});
|
||||
var context = await browser.NewContextAsync(new BrowserNewContextOptions
|
||||
{
|
||||
ColorScheme = ColorScheme.Dark,
|
||||
Geolocation = new Geolocation
|
||||
{
|
||||
Latitude = 37.819722m,
|
||||
Longitude = -122.478611m,
|
||||
},
|
||||
Locale = "es",
|
||||
Permissions = new[] { ContextPermission.Geolocation },
|
||||
TimezoneId = "Europe/Rome",
|
||||
UserAgent = "hardkodemium",
|
||||
ViewportSize = new ViewportSize
|
||||
{
|
||||
Height = 720,
|
||||
Width = 1280,
|
||||
},
|
||||
});`;
|
||||
using var playwright = await Playwright.CreateAsync();
|
||||
await using var browser = await playwright.${capitalize(browserName)}.LaunchAsync(new BrowserTypeLaunchOptions
|
||||
{
|
||||
${launchOptions(channel)}
|
||||
Proxy = new ProxySettings
|
||||
{
|
||||
Server = "http://myproxy:3128",
|
||||
},
|
||||
});
|
||||
var context = await browser.NewContextAsync(new BrowserNewContextOptions
|
||||
{
|
||||
ColorScheme = ColorScheme.Dark,
|
||||
Geolocation = new Geolocation
|
||||
{
|
||||
Latitude = 37.819722m,
|
||||
Longitude = -122.478611m,
|
||||
},
|
||||
Locale = "es",
|
||||
Permissions = new[] { ContextPermission.Geolocation },
|
||||
TimezoneId = "Europe/Rome",
|
||||
UserAgent = "hardkodemium",
|
||||
ViewportSize = new ViewportSize
|
||||
{
|
||||
Height = 720,
|
||||
Width = 1280,
|
||||
},
|
||||
});`;
|
||||
await cli.waitFor(expectedResult);
|
||||
});
|
||||
|
||||
@ -93,12 +89,12 @@ test('should print the correct context options when using a device', async ({ br
|
||||
|
||||
const cli = runCLI(['--device=Pixel 2', '--target=csharp', emptyHTML]);
|
||||
const expectedResult = `
|
||||
using var playwright = await Playwright.CreateAsync();
|
||||
await using var browser = await playwright.${capitalize(browserName)}.LaunchAsync(new BrowserTypeLaunchOptions
|
||||
{
|
||||
${launchOptions(channel)}
|
||||
});
|
||||
var context = await browser.NewContextAsync(playwright.Devices["Pixel 2"]);`;
|
||||
using var playwright = await Playwright.CreateAsync();
|
||||
await using var browser = await playwright.${capitalize(browserName)}.LaunchAsync(new BrowserTypeLaunchOptions
|
||||
{
|
||||
${launchOptions(channel)}
|
||||
});
|
||||
var context = await browser.NewContextAsync(playwright.Devices["Pixel 2"]);`;
|
||||
await cli.waitFor(expectedResult);
|
||||
});
|
||||
|
||||
@ -117,33 +113,33 @@ test('should print the correct context options when using a device and additiona
|
||||
'--target=csharp',
|
||||
emptyHTML]);
|
||||
const expectedResult = `
|
||||
using var playwright = await Playwright.CreateAsync();
|
||||
await using var browser = await playwright.${capitalize(browserName)}.LaunchAsync(new BrowserTypeLaunchOptions
|
||||
{
|
||||
${launchOptions(channel)}
|
||||
Proxy = new ProxySettings
|
||||
{
|
||||
Server = "http://myproxy:3128",
|
||||
},
|
||||
});
|
||||
var context = await browser.NewContextAsync(new BrowserNewContextOptions(playwright.Devices["iPhone 11"])
|
||||
{
|
||||
ColorScheme = ColorScheme.Dark,
|
||||
Geolocation = new Geolocation
|
||||
{
|
||||
Latitude = 37.819722m,
|
||||
Longitude = -122.478611m,
|
||||
},
|
||||
Locale = "es",
|
||||
Permissions = new[] { ContextPermission.Geolocation },
|
||||
TimezoneId = "Europe/Rome",
|
||||
UserAgent = "hardkodemium",
|
||||
ViewportSize = new ViewportSize
|
||||
{
|
||||
Height = 720,
|
||||
Width = 1280,
|
||||
},
|
||||
});`;
|
||||
using var playwright = await Playwright.CreateAsync();
|
||||
await using var browser = await playwright.${capitalize(browserName)}.LaunchAsync(new BrowserTypeLaunchOptions
|
||||
{
|
||||
${launchOptions(channel)}
|
||||
Proxy = new ProxySettings
|
||||
{
|
||||
Server = "http://myproxy:3128",
|
||||
},
|
||||
});
|
||||
var context = await browser.NewContextAsync(new BrowserNewContextOptions(playwright.Devices["iPhone 11"])
|
||||
{
|
||||
ColorScheme = ColorScheme.Dark,
|
||||
Geolocation = new Geolocation
|
||||
{
|
||||
Latitude = 37.819722m,
|
||||
Longitude = -122.478611m,
|
||||
},
|
||||
Locale = "es",
|
||||
Permissions = new[] { ContextPermission.Geolocation },
|
||||
TimezoneId = "Europe/Rome",
|
||||
UserAgent = "hardkodemium",
|
||||
ViewportSize = new ViewportSize
|
||||
{
|
||||
Height = 720,
|
||||
Width = 1280,
|
||||
},
|
||||
});`;
|
||||
await cli.waitFor(expectedResult);
|
||||
});
|
||||
|
||||
@ -153,21 +149,21 @@ test('should print load/save storageState', async ({ browserName, channel, runCL
|
||||
await fs.promises.writeFile(loadFileName, JSON.stringify({ cookies: [], origins: [] }), 'utf8');
|
||||
const cli = runCLI([`--load-storage=${loadFileName}`, `--save-storage=${saveFileName}`, '--target=csharp', emptyHTML]);
|
||||
const expectedResult1 = `
|
||||
using var playwright = await Playwright.CreateAsync();
|
||||
await using var browser = await playwright.${capitalize(browserName)}.LaunchAsync(new BrowserTypeLaunchOptions
|
||||
{
|
||||
${launchOptions(channel)}
|
||||
});
|
||||
var context = await browser.NewContextAsync(new BrowserNewContextOptions
|
||||
{
|
||||
StorageStatePath = "${loadFileName.replace(/\\/g, '\\\\')}",
|
||||
});`;
|
||||
using var playwright = await Playwright.CreateAsync();
|
||||
await using var browser = await playwright.${capitalize(browserName)}.LaunchAsync(new BrowserTypeLaunchOptions
|
||||
{
|
||||
${launchOptions(channel)}
|
||||
});
|
||||
var context = await browser.NewContextAsync(new BrowserNewContextOptions
|
||||
{
|
||||
StorageStatePath = "${loadFileName.replace(/\\/g, '\\\\')}",
|
||||
});`;
|
||||
await cli.waitFor(expectedResult1);
|
||||
const expectedResult2 = `
|
||||
await context.StorageStateAsync(new BrowserContextStorageStateOptions
|
||||
{
|
||||
Path = "${saveFileName.replace(/\\/g, '\\\\')}"
|
||||
});
|
||||
await context.StorageStateAsync(new BrowserContextStorageStateOptions
|
||||
{
|
||||
Path = "${saveFileName.replace(/\\/g, '\\\\')}"
|
||||
});
|
||||
`;
|
||||
await cli.waitFor(expectedResult2);
|
||||
});
|
||||
@ -175,12 +171,12 @@ test('should print load/save storageState', async ({ browserName, channel, runCL
|
||||
test('should work with --save-har', async ({ runCLI }, testInfo) => {
|
||||
const harFileName = testInfo.outputPath('har.har');
|
||||
const expectedResult = `
|
||||
var context = await browser.NewContextAsync(new BrowserNewContextOptions
|
||||
{
|
||||
RecordHarMode = HarMode.Minimal,
|
||||
RecordHarPath = ${JSON.stringify(harFileName)},
|
||||
ServiceWorkers = ServiceWorkerPolicy.Block,
|
||||
});`;
|
||||
var context = await browser.NewContextAsync(new BrowserNewContextOptions
|
||||
{
|
||||
RecordHarMode = HarMode.Minimal,
|
||||
RecordHarPath = ${JSON.stringify(harFileName)},
|
||||
ServiceWorkers = ServiceWorkerPolicy.Block,
|
||||
});`;
|
||||
const cli = runCLI(['--target=csharp', `--save-har=${harFileName}`], {
|
||||
autoExitWhen: expectedResult,
|
||||
});
|
||||
@ -231,7 +227,6 @@ public class Tests : PageTest
|
||||
public async Task MyTest()
|
||||
{
|
||||
await Page.GotoAsync("${emptyHTML}");
|
||||
|
||||
}
|
||||
}`;
|
||||
expect(cli.text()).toContain(expected);
|
||||
@ -259,7 +254,6 @@ public class Tests : PageTest
|
||||
public async Task MyTest()
|
||||
{
|
||||
await Page.GotoAsync("${emptyHTML}");
|
||||
|
||||
}
|
||||
}`;
|
||||
expect(cli.text()).toContain(expected);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user