...

Source file src/github.com/playwright-community/playwright-go/tests/file_chooser_test.go

Documentation: github.com/playwright-community/playwright-go/tests

     1  package playwright_test
     2  
     3  import (
     4  	"io/ioutil"
     5  	"testing"
     6  
     7  	"github.com/playwright-community/playwright-go"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  func TestFileChooser(t *testing.T) {
    12  	BeforeEach(t)
    13  	defer AfterEach(t)
    14  	_, err := page.Goto(server.PREFIX + "/input/fileupload.html")
    15  	require.NoError(t, err)
    16  	input, err := page.QuerySelector("input")
    17  	require.NoError(t, err)
    18  	file, err := ioutil.ReadFile(Asset("file-to-upload.txt"))
    19  	require.NoError(t, err)
    20  	require.NoError(t, input.SetInputFiles([]playwright.InputFile{
    21  		{
    22  			Name:     "file-to-upload.txt",
    23  			MimeType: "text/plain",
    24  			Buffer:   file,
    25  		},
    26  	}))
    27  	fileName, err := page.Evaluate("e => e.files[0].name", input)
    28  	require.NoError(t, err)
    29  	require.Equal(t, "file-to-upload.txt", fileName)
    30  	content, err := page.Evaluate(`e => {
    31          reader = new FileReader()
    32          promise = new Promise(fulfill => reader.onload = fulfill)
    33          reader.readAsText(e.files[0])
    34          return promise.then(() => reader.result)
    35      }`, input)
    36  	require.NoError(t, err)
    37  	require.Equal(t, "contents of the file", content)
    38  }
    39  
    40  func TestFileChooserShouldEmitEvent(t *testing.T) {
    41  	BeforeEach(t)
    42  	defer AfterEach(t)
    43  	_, err := page.Goto(server.EMPTY_PAGE)
    44  	require.NoError(t, err)
    45  	require.NoError(t, page.SetContent("<input type=file>"))
    46  
    47  	fileChooser, err := page.ExpectFileChooser(func() error {
    48  		return page.Click("input")
    49  	})
    50  	require.NoError(t, err)
    51  	require.False(t, fileChooser.IsMultiple())
    52  	require.Equal(t, page, fileChooser.Page())
    53  	elementHTML, err := fileChooser.Element().InnerHTML()
    54  	require.NoError(t, err)
    55  
    56  	inputElement, err := page.QuerySelector("input")
    57  	require.NoError(t, err)
    58  	inputElementHTML, err := inputElement.InnerHTML()
    59  	require.NoError(t, err)
    60  
    61  	require.Equal(t, elementHTML, inputElementHTML)
    62  
    63  	require.NoError(t, fileChooser.SetFiles([]playwright.InputFile{
    64  		{
    65  			Name:     "file-to-upload.txt",
    66  			MimeType: "text/plain",
    67  			Buffer:   []byte("123"),
    68  		},
    69  	}))
    70  	fileName, err := page.Evaluate("e => e.files[0].name", inputElement)
    71  	require.NoError(t, err)
    72  	require.Equal(t, "file-to-upload.txt", fileName)
    73  }
    74  

View as plain text