Best Python code snippet using playwright-python
_assertions.py
Source: _assertions.py
...239 timeout: float = None,240 ) -> None:241 __tracebackhide__ = True242 await self._not.to_have_css(name, value, timeout)243 async def to_have_id(244 self,245 id: Union[str, Pattern],246 timeout: float = None,247 ) -> None:248 __tracebackhide__ = True249 expected_text = to_expected_text_values([id])250 await self._expect_impl(251 "to.have.id",252 FrameExpectOptions(expectedText=expected_text, timeout=timeout),253 id,254 "Locator expected to have ID",255 )256 async def not_to_have_id(257 self,258 id: Union[str, Pattern],259 timeout: float = None,260 ) -> None:261 __tracebackhide__ = True262 await self._not.to_have_id(id, timeout)263 async def to_have_js_property(264 self,265 name: str,266 value: Any,267 timeout: float = None,268 ) -> None:269 __tracebackhide__ = True270 await self._expect_impl(271 "to.have.property",272 FrameExpectOptions(273 expressionArg=name, expectedValue=value, timeout=timeout274 ),275 value,276 "Locator expected to have JS Property",...
test_full.py
Source: test_full.py
1import requests2from database_connector import deleteUser, getUserId3import os4import json5import shutil6root_url = "http://127.0.0.1:5000/"7def test_life():8 response = requests.get(root_url)9 assert (response.status_code == 200)10def test_register_pos():11 username = "testuser"12 password = "blubb"13 data = {14 "username": username,15 "password": password,16 "context": "my_project"17 }18 response = requests.post(root_url + "register", json=data)19 assert (response.status_code == 200)20 print("registered user")21def test_login_pos():22 username = "testuser"23 password = "blubb"24 data = {25 "username": username,26 "password": password27 }28 response = requests.post(root_url + "login", json=data)29 print(response)30 print(response.status_code)31 assert (response.status_code == 200)32def test_login_neg_pw():33 username = "testuser"34 password = "falsches_passwort"35 data = {36 "username": username,37 "password": password38 }39 response = requests.post(root_url + "login", json=data)40 assert (response.status_code == 401)41def test_login_neg_user():42 username = "kein_user"43 password = "passwort"44 data = {45 "username": username,46 "password": password47 }48 response = requests.post(root_url + "login", json=data)49 assert (response.status_code == 401)50def test_register_neg():51 username = "testuser"52 password = "neues_passwort"53 data = {54 "username": username,55 "password": password56 }57 response = requests.post(root_url + "register", json=data)58 assert (response.status_code == 403)59def test_layerchange_add_new_geojson_layer():60 query = "test_layer"61 data = {62 "userid": getUserId("testuser"),63 "data": {64 "features": [ 65 get_geojson_test_feature(to_have_id=0, to_be_valid=True)66 ]67 }68 }69 response = requests.post(root_url + "addLayerData/" + query, json=data)70 assert (response.status_code == 200)71def test_layerchange_add_new_geojson_layer_invalid():72 query = "test_layer_invalid"73 data = {74 "userid": getUserId("testuser"),75 "data": {76 "features": [ 77 get_geojson_test_feature(to_have_id=0, to_be_valid=False)78 ]79 }80 }81 response = requests.post(root_url + "addLayerData/" + query, json=data)82 assert (response.status_code == 400)83def test_get_entire_layer():84 data = {85 "userid": getUserId("testuser"),86 "layer": "test_layer"87 }88 response = requests.get(root_url + "getLayer", json=data)89 assert (response.status_code == 200)90def test_get_layerdata_single_prop():91 query = "features/0/id"92 data = {93 "userid": getUserId("testuser"),94 "layer": "test_layer"95 }96 response = requests.post(root_url + "getLayer/" + query, json=data)97 assert (response.status_code == 200)98def test_layerchange_nonexistant():99 query = "nonexistant_layer/features/0/id"100 data = {101 "userid": getUserId("testuser"),102 "data": -1103 }104 response = requests.post(root_url + "addLayerData/" + query, json=data)105 assert (response.status_code == 400)106def test_layerchange_add_new_data_layer():107 query = "test_layer2/"108 data = {109 "userid": getUserId("testuser"),110 "data": {"data": [{"state": 0}, {"state": 2}, {"state": 4}]}111 }112 response = requests.post(root_url + "addLayerData/" + query, json=data)113 assert (response.status_code == 200)114def test_update_data_layer_single_prop():115 import random116 query = "test_layer2/data/1/state"117 data = {118 "userid": getUserId("testuser"),119 "data": {"somedata": random.randint(0, 1000)}120 }121 response = requests.post(root_url + "addLayerData/" + query, json=data)122 assert (response.status_code == 200)123def test_layerchange_update_geojson_feature():124 query = "test_layer/features/0/"125 data = {126 "userid": getUserId("testuser"),127 "data": get_geojson_test_feature(to_have_id=1, to_be_valid=True)128 129 }130 response = requests.post(root_url + "addLayerData/" + query, json=data)131 assert (response.status_code == 200)132 133def test_layerchange_update_geojson_feature_invalid():134 query = "test_layer/features/0/"135 data = {136 "userid": getUserId("testuser"),137 "data": get_geojson_test_feature(to_have_id=1, to_be_valid=False)138 }139 response = requests.post(root_url + "addLayerData/" + query, json=data)140 assert (response.status_code == 400)141def test_update_data_layer_all():142 query = "test_layer/"143 data = {144 "userid": getUserId("testuser"),145 "data": {"data": [{"state": 0}, {"state": 2}, {"state": 4}]}146 }147 response = requests.post(root_url + "addLayerData/" + query, json=data)148 assert (response.status_code == 200)149def test_nouser():150 query = "test_layer"151 data = {152 "userid": "189637",153 "data": -1154 }155 response = requests.post(root_url + "addLayerData/" + query, json=data)156 assert (response.status_code == 401)157def test_abm_request():158 # make user not restricted159 user_db_file = "data/users.json"160 userid = getUserId("testuser")161 with open(user_db_file, 'r') as jsonread:162 jsondata = json.load(jsonread)163 jsondata[userid]["restricted"] = False164 with open(user_db_file, 'w') as jsonwrite:165 json.dump(jsondata, jsonwrite)166 add_abm_test_data(userid)167 query = "abmScenario"168 data_without_time_filter = {169 "userid": userid,170 "scenario_properties": {171 "bridge_1": True,172 "amenities_roof": "random",173 "blocks": "open",174 "bridge_2": False,175 "main_street_orientation": "vertical"176 },177 "agent_filters": {178 "mode": "foot",179 "student_or_adult": "adult",180 "resident_or_visitor": "resident"181 }182 }183 data_with_time_filter = data_without_time_filter.copy()184 data_with_time_filter["time_filters"] = {185 "start_time": 10000.0,186 "end_time": 30000.0187 }188 response_with_time_filter = requests.post(189 root_url + "getLayer/" + query, json=data_with_time_filter)190 response_without_time_filter = requests.post(191 root_url + "getLayer/" + query, json=data_without_time_filter)192 assert (response_with_time_filter.status_code == 200)193 assert (response_without_time_filter.status_code == 200)194 assert (len(response_without_time_filter.json()["data"]) > len(195 response_with_time_filter.json()["data"]))196def get_geojson_test_feature(to_have_id: int, to_be_valid: bool):197 valid_coordinates = [[[10.0, 53.5], [10.1, 53.5], [10.1, 53.6], [10.0, 53.6], [10.0, 53.5]]]198 invalid_coordinates = [[[10.0, 53.5], [10.1, 53.5], [10.0, 53.5], [10.1, 53.6], [10.0, 53.6]]] # self intersecting bowtie 199 geojson_test_feature_trunk = {200 "type": "Feature",201 "id": None,202 "properties": {"test_prop": "test_value"},203 "geometry": {204 "type": "Polygon",205 "coordinates": []206 }207 }208 test_feature = geojson_test_feature_trunk.copy()209 test_feature["id"] = to_have_id210 if not to_be_valid:211 test_feature["geometry"]["coordinates"] = invalid_coordinates212 else:213 test_feature["geometry"]["coordinates"] = valid_coordinates214 return test_feature215def add_abm_test_data(userid):216 scenarios = {217 "scenario_1": {218 "bridge_1": True,219 "bridge_2": False,220 "blocks": "open",221 "main_street_orientation": "vertical",222 "amenities_roof": "random",223 },224 "scenario_2": {225 "brige_1": False,226 "bridge_2": True,227 "blocks": "open",228 "main_street_orientation": "vertical",229 "amenities_roof": "random"230 },231 }232 with open("data/" + "user/" + userid + "/abmScenarios.json", "w") as jsonfile:233 json.dump(scenarios, jsonfile)234 if not os.path.exists("data" + "/" + "user" "/" + userid + "/" + "abm"):235 os.mkdir("data" + "/" + "user" + "/" + userid + "/" + "abm")236 with open("data" + "/" + "user" + "/" + userid + "/" + "abm" + "/" + "scenario_1.json", "w+") as jsonfile:237 jsondata = {238 "data": [239 {240 "agent": {"source": "1-02_work-leisure-home.csv", "id": "worker_visitor1266", "mode": "foot",241 "student_or_adult": "adult", "resident_or_visitor": "resident"},242 "timestamps": [56760.0, 56880.0],243 "path": [["10.029116616518474", "53.52583144920887"], ["10.030062856331478", "53.52693663639755"]]244 },245 {246 "agent": {"source": "1-02_work-leisure-home.csv", "id": "worker_visitor1266",247 "mode": "foot", "student_or_adult": "student", "resident_or_visitor": "resident"},248 "timestamps": [10920.0, 11040.0],249 "path": [["10.028048217630724", "53.520463720950715"], ["10.025995494385159", "53.52060665984872"]]250 },251 {252 "agent": {"source": "1-03_work-lunch-work.csv", "id": "worker19", "mode": "public_transport",253 "student_or_adult": "student", "resident_or_visitor": "unknown"},254 "timestamps": [19440.0, 19560.0],255 "path": [["10.031381105913587", "53.52557404766839"], ["10.029512078475264", "53.52618638139043"]256 ]257 },258 {259 "agent": {"source": "1-03_work-lunch-work.csv", "id": "worker21", "mode": "foot",260 "student_or_adult": "adult", "resident_or_visitor": "unknown"},261 "timestamps": [24480.0, 24600.0],262 "path": [["10.03363059230029", "53.521674642537704"], ["10.03175386167115", "53.52229952834055"]]263 }264 ]265 }266 json.dump(jsondata, jsonfile)267def cleanup():268 print("deleting test layers")269 filepath = "data/user/" + getUserId("testuser") + "/test_layer.json"270 if os.path.exists(filepath):271 os.remove(filepath)272 filepath = "data/user/" + getUserId("testuser") + "/test_layer2.json"273 if os.path.exists(filepath):274 os.remove(filepath)275 filepath = "data/user/" + getUserId("testuser") + "/hashes.json"276 if os.path.exists(filepath):277 os.remove(filepath)278 filepath = "data/user/" + getUserId("testuser")279 if os.path.exists(filepath):280 shutil.rmtree(filepath)281 print("deleting test user", "testuser")282 deleteUser(getUserId("testuser"))283if __name__ == "__main__":284 try:285 print("test_life")286 test_life()287 print("test_register_pos")288 test_register_pos()289 print("test_login_pos")290 test_login_pos()291 print("test_login_neg_pw")292 test_login_neg_pw()293 print("test_login_neg_user")294 test_login_neg_user()295 print("test_register_neg")296 test_register_neg()297 print("test_layerchange_add_new_geojson_layer")298 test_layerchange_add_new_geojson_layer()299 print("test_layerchange_add_new_geojson_layer_invalid")300 test_layerchange_add_new_geojson_layer_invalid()301 print("test_layer")302 test_get_entire_layer()303 print("test_get_layerdata_single_prop")304 test_get_layerdata_single_prop()305 print("test_layerchange_nonexistant")306 test_layerchange_nonexistant()307 print("test_layerchange_add_geojson_feature")308 test_layerchange_update_geojson_feature()309 print("test_layerchange_add_geojsonfeature_invalid")310 test_layerchange_update_geojson_feature_invalid()311 print("test_layerchange_add_new_data_layer")312 test_layerchange_add_new_data_layer()313 print("test_update_data_layer_single_prop")314 test_update_data_layer_single_prop()315 print("test_update_data_layer_all")316 test_update_data_layer_all()317 print("test_nouser")318 test_nouser()319 print("test abm request")320 test_abm_request()321 except AssertionError as e:322 print("^^^^ Failed here ^^^^\n")323 raise e324 else:325 print("\nALL TESTS SUCCESSFULL!\n")326 finally:...
test_assertions.py
Source: test_assertions.py
...114 with pytest.raises(AssertionError):115 expect(page.locator("div.foobar")).to_have_css(116 "color", "rgb(42, 42, 42)", timeout=100117 )118def test_assertions_locator_to_have_id(page: Page, server: Server) -> None:119 page.goto(server.EMPTY_PAGE)120 page.set_content("<div class=foobar id=kek>kek</div>")121 expect(page.locator("div.foobar")).to_have_id("kek")122 expect(page.locator("div.foobar")).not_to_have_id("top", timeout=100)123 with pytest.raises(AssertionError):124 expect(page.locator("div.foobar")).to_have_id("top", timeout=100)125def test_assertions_locator_to_have_js_property(page: Page, server: Server) -> None:126 page.goto(server.EMPTY_PAGE)127 page.set_content("<div></div>")128 page.eval_on_selector(129 "div", "e => e.foo = { a: 1, b: 'string', c: new Date(1627503992000) }"130 )131 expect(page.locator("div")).to_have_js_property(132 "foo",133 {"a": 1, "b": "string", "c": datetime.utcfromtimestamp(1627503992000 / 1000)},134 )135def test_assertions_locator_to_have_text(page: Page, server: Server) -> None:136 page.goto(server.EMPTY_PAGE)137 page.set_content("<div id=foobar>kek</div>")138 expect(page.locator("div#foobar")).to_have_text("kek")...
Playwright error connection refused in docker
playwright-python advanced setup
How to select an input according to a parent sibling label
Error when installing Microsoft Playwright
Trouble waiting for changes to complete that are triggered by Python Playwright `select_option`
Capturing and Storing Request Data Using Playwright for Python
Can Playwright be used to launch a browser instance
Trouble in Clicking on Log in Google Button of Pop Up Menu Playwright Python
Scrapy Playwright get date by clicking button
React locator example
I solved my problem. In fact my docker container (frontend) is called "app" which is also domain name of fronend application. My application is running locally on http. Chromium and geko drivers force httpS connection for some domain names one of which is "app". So i have to change name for my docker container wich contains frontend application.
Check out the latest blogs from LambdaTest on this topic:
The sky’s the limit (and even beyond that) when you want to run test automation. Technology has developed so much that you can reduce time and stay more productive than you used to 10 years ago. You needn’t put up with the limitations brought to you by Selenium if that’s your go-to automation testing tool. Instead, you can pick from various test automation frameworks and tools to write effective test cases and run them successfully.
When it comes to web automation testing, there are a number of frameworks like Selenium, Cypress, PlayWright, Puppeteer, etc., that make it to the ‘preferred list’ of frameworks. The choice of test automation framework depends on a range of parameters like type, complexity, scale, along with the framework expertise available within the team. However, it’s no surprise that Selenium is still the most preferred framework among developers and QAs.
Playwright is a framework that I’ve always heard great things about but never had a chance to pick up until earlier this year. And since then, it’s become one of my favorite test automation frameworks to use when building a new automation project. It’s easy to set up, feature-packed, and one of the fastest, most reliable frameworks I’ve worked with.
The speed at which tests are executed and the “dearth of smartness” in testing are the two major problems developers and testers encounter.
With the rapidly evolving technology due to its ever-increasing demand in today’s world, Digital Security has become a major concern for the Software Industry. There are various ways through which Digital Security can be achieved, Captcha being one of them.Captcha is easy for humans to solve but hard for “bots” and other malicious software to figure out. However, Captcha has always been tricky for the testers to automate, as many of them don’t know how to handle captcha in Selenium or using any other test automation framework.
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!