...

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

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

     1  package playwright_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/playwright-community/playwright-go"
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestBrowserIsConnected(t *testing.T) {
    11  	BeforeEach(t)
    12  	defer AfterEach(t)
    13  	require.True(t, browser.IsConnected())
    14  }
    15  
    16  func TestBrowserVersion(t *testing.T) {
    17  	BeforeEach(t)
    18  	defer AfterEach(t)
    19  	require.Greater(t, len(browser.Version()), 2)
    20  }
    21  
    22  func TestBrowserNewContext(t *testing.T) {
    23  	BeforeEach(t)
    24  	defer AfterEach(t)
    25  	require.Equal(t, 1, len(context.Pages()))
    26  }
    27  
    28  func TestBrowserNewContextWithExtraHTTPHeaders(t *testing.T) {
    29  	newContextWithOptions(t, playwright.BrowserNewContextOptions{
    30  		ExtraHttpHeaders: map[string]string{"extra-http": "42"},
    31  	})
    32  	defer AfterEach(t)
    33  	require.Equal(t, 1, len(context.Pages()))
    34  	intercepted := make(chan bool, 1)
    35  	err := page.Route("**/empty.html", func(route playwright.Route, request playwright.Request) {
    36  		v, ok := request.Headers()["extra-http"]
    37  		require.True(t, ok)
    38  		require.Equal(t, "42", v)
    39  		require.NoError(t, route.Continue())
    40  		intercepted <- true
    41  	})
    42  	require.NoError(t, err)
    43  	_, err = page.Goto(server.EMPTY_PAGE)
    44  	require.NoError(t, err)
    45  	<-intercepted
    46  }
    47  
    48  func TestBrowserNewPage(t *testing.T) {
    49  	BeforeEach(t)
    50  	defer AfterEach(t)
    51  	require.Equal(t, 1, len(browser.Contexts()))
    52  	page, err := browser.NewPage()
    53  	require.NoError(t, err)
    54  	require.Equal(t, 2, len(browser.Contexts()))
    55  	require.False(t, page.IsClosed())
    56  	require.NoError(t, page.Close())
    57  	require.True(t, page.IsClosed())
    58  	require.Equal(t, 1, len(browser.Contexts()))
    59  }
    60  
    61  func TestBrowserNewPageWithExtraHTTPHeaders(t *testing.T) {
    62  	BeforeEach(t)
    63  	defer AfterEach(t)
    64  	require.Equal(t, 1, len(browser.Contexts()))
    65  	page, err := browser.NewPage(playwright.BrowserNewContextOptions{
    66  		ExtraHttpHeaders: map[string]string{
    67  			"extra-http": "42",
    68  		},
    69  	})
    70  	require.NoError(t, err)
    71  	require.Equal(t, 2, len(browser.Contexts()))
    72  	require.False(t, page.IsClosed())
    73  
    74  	intercepted := make(chan bool, 1)
    75  	err = page.Route("**/empty.html", func(route playwright.Route, request playwright.Request) {
    76  		v, ok := request.Headers()["extra-http"]
    77  		require.True(t, ok)
    78  		require.Equal(t, "42", v)
    79  		require.NoError(t, route.Continue())
    80  		intercepted <- true
    81  	})
    82  	require.NoError(t, err)
    83  	_, err = page.Goto(server.EMPTY_PAGE)
    84  	require.NoError(t, err)
    85  	<-intercepted
    86  
    87  	require.NoError(t, page.Close())
    88  	require.True(t, page.IsClosed())
    89  	require.Equal(t, 1, len(browser.Contexts()))
    90  }
    91  
    92  func TestBrowserShouldErrorUponSecondCreateNewPage(t *testing.T) {
    93  	BeforeEach(t)
    94  	defer AfterEach(t)
    95  	page, err := browser.NewPage()
    96  	require.NoError(t, err)
    97  	_, err = page.Context().NewPage()
    98  	require.Error(t, err)
    99  	require.Equal(t, "Please use browser.NewContext()", err.Error())
   100  	require.NoError(t, page.Close())
   101  }
   102  
   103  func TestNewBrowserCDPSession(t *testing.T) {
   104  	BeforeEach(t)
   105  	defer AfterEach(t)
   106  	cdpSession, err := browser.NewBrowserCDPSession()
   107  	if isChromium {
   108  		require.NoError(t, err)
   109  		require.NoError(t, cdpSession.Detach())
   110  	} else {
   111  		require.Error(t, err)
   112  	}
   113  }
   114  
   115  func TestBrowserClose(t *testing.T) {
   116  	browser, err := browserType.Launch()
   117  	require.NoError(t, err)
   118  	onCloseWasCalled := make(chan bool, 1)
   119  	onClose := func() {
   120  		onCloseWasCalled <- true
   121  	}
   122  	browser.On("disconnected", onClose)
   123  	require.True(t, browser.IsConnected())
   124  	require.NoError(t, browser.Close())
   125  	<-onCloseWasCalled
   126  	require.False(t, browser.IsConnected())
   127  }
   128  

View as plain text