{"_id":"58f42cec6b97250f0036226f","project":"568fde81b700ce0d002f4b43","user":"568fffce769f210d0013258f","version":{"_id":"568fde82b700ce0d002f4b46","__v":23,"project":"568fde81b700ce0d002f4b43","createdAt":"2016-01-08T16:06:26.373Z","releaseDate":"2016-01-08T16:06:26.373Z","categories":["568fde82b700ce0d002f4b47","568ff0e504440a1700e4cbbd","569002f19ebef90d0087289d","569004f4769f210d00132599","5690056d9ebef90d008728a0","569005d394c5030d0028813a","5690067804440a1700e4cbe2","569137eb3c4f510d00ec9b92","56913815e56a790d008dbfe3","569138ba3c4f510d00ec9b93","5691392f3c4f510d00ec9b94","56913bbe72f2810d007e4cb0","56933b8d6ebadc0d005b71d2","56933b8d6ebadc0d005b71d3","569564facaa32519009c41e6","5696a319b6d61f0d00acfb40","5696a319a857080d0082e8e8","5697efe43503e40d0061f4d1","5697efe48d2a770d00d2fd16","569e9597ffccd10d00a05c59","56a7a1523d33bc2100793d5c","56a7a32ecf6d771700baeee8","56b8b0f7ddeb231700e69825"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":false,"codename":"bar","version_clean":"1.0.0","version":"1.0"},"category":{"_id":"569002f19ebef90d0087289d","pages":["56900352769f210d00132595","5690047121fcf0190071d943","569004924719c119002ce654","569004ceb700ce0d002f4b94","569023e518c3920d00be8b37","569023f748df220d004ca215","5690240af7eb9a0d00f4465d","5690241b48df220d004ca217","5690243e48df220d004ca219","56902453741e9c0d00af2fb5","56902463efcc380d0043a5a1","5690247b18c3920d00be8b39","56902492f7eb9a0d00f4465f","569024a16c49d70d00f18075","569024b2efcc380d0043a5a3","569024cc48df220d004ca21b","569024ea18c3920d00be8b3b","5690258618c3920d00be8b3f","5690259bf7eb9a0d00f44662","569025b06c49d70d00f18077","569029b418c3920d00be8b43","569029d4f7eb9a0d00f44667","569029e8e056c80d00fdec58","569029fb48df220d004ca221","56902a1c18c3920d00be8b46","56902a45f7eb9a0d00f44669","56902a6be056c80d00fdec5a","56902a78f7eb9a0d00f4466b","56902a8848df220d004ca224","56902aa018c3920d00be8b4b","56902ace6c49d70d00f18085","56902ae0741e9c0d00af2fc6","56902aee48df220d004ca226","56902af8f7eb9a0d00f44674","56902b26efcc380d0043a5b1","56902b8148df220d004ca22a","56902ba918c3920d00be8b55","56902bb96c49d70d00f1808b","56902bc818c3920d00be8b57","56902bd518c3920d00be8b59","56902be218c3920d00be8b5b","56902bf66c49d70d00f1808e","56902c05e056c80d00fdec5d","56902c196c49d70d00f18090","56902c2648df220d004ca22d","56902c34f7eb9a0d00f44678","56902c5518c3920d00be8b5d","56902c62741e9c0d00af2fcc","56902cde48df220d004ca230","56902cea741e9c0d00af2fcf","56902d0ae056c80d00fdec60","56902d20efcc380d0043a5b4","56902d3448df220d004ca232","5696c3fbf9203821005fe2fb","5696c3fb9e2d000d00947ab0","5696c3fbf9203821005fe2fa","5697efee8d2a770d00d2fd17","569802611c4dc823005426c7","56a65c82b3ffe00d00156eaf","56f01f88332da41700f24b74"],"project":"568fde81b700ce0d002f4b43","version":"568fde82b700ce0d002f4b46","__v":60,"sync":{"url":"","isSync":false},"reference":false,"createdAt":"2016-01-08T18:41:53.562Z","from_sync":false,"order":1,"slug":"commands","title":"Commands"},"parentDoc":null,"__v":0,"updates":[],"next":{"pages":[],"description":""},"createdAt":"2017-04-17T02:48:12.422Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"auth":"required","params":[],"url":""},"isReference":false,"order":43,"body":"Get all ancestors of each DOM element in the set of matched DOM elements up to, but not including, the element matched by the selector\n\n| | |\n|--- | --- |\n| **Returns** | the new DOM element(s) found by the command. |\n| **Timeout** | `cy.parentsUntil` will retry for the duration of the [`defaultCommandTimeout`](https://on.cypress.io/guides/configuration#timeouts) |\n\n***\n\n# [cy.parentsUntil( *selector* )](#usage)\n\nGet all of the ancestors of the elements until the selector.\n\n***\n\n# [cy.parentsUntil( *selector*, *filter )](#filter-usage)\n\nWhen a filter is provided, it retrieves all of the ancestors up until the selector only if it matches that filter.\n\n***\n\n# [cy.parentsUntil( *element* )](#element-usage)\n\nGet all of the ancestors of the elements until the DOM node or jQuery object.\n\n***\n\n# [cy.parentsUntil( *element*, *filter )](#element-filter-usage)\n\nWhen a filter is provided, it retrieves all of the ancestors up until the DOM node or jQuery object only if it matches that filter.\n\n***\n\n# Options\n\nPass in an options object to change the default behavior of `cy.parentsUntil`.\n\n**cy.parentsUntil( *selector*, *options* )**\n**cy.parentsUntil( *selector*, *filter*, *options* )**\n**cy.parentsUntil( *element*, *options* )**\n**cy.parentsUntil( *element*, *filter*, *options* )**\n\nOption | Default | Notes\n--- | --- | ---\n`log` | `true` | whether to display command in command log\n`timeout` | [`defaultCommandTimeout`](https://on.cypress.io/guides/configuration#timeouts) | Total time to retry getting the element\n\n***\n\n# Usage\n\n## Find all of the `.active` element's ancestors until `.nav`\n\n[block:code]\n{\n    \"codes\": [\n        {\n            \"code\": \"<ul class=\\\"nav\\\">\\n  <li>\\n    <a href=\\\"#\\\">Clothes</a>\\n    <ul class=\\\"menu\\\">\\n      <li>\\n        <a href=\\\"/shirts\\\">Shirts</a>\\n      </li>\\n      <li class=\\\"active\\\">\\n        <a href=\\\"/pants\\\">Pants</a>\\n      </li>\\n    </ul>\\n  </li>\\n</ul>\\n\",\n            \"language\": \"html\"\n        }\n    ]\n}\n[/block]\n\n[block:code]\n{\n    \"codes\": [\n        {\n            \"code\": \"//returns [ul.menu, li]\\ncy.get(\\\".active\\\").parentsUntil(\\\".nav\\\")\\n\",\n            \"language\": \"javascript\"\n        }\n    ]\n}\n[/block]\n\n***\n\n# Command Log\n\n## Find all of the `.active` element's ancestors until `.nav`\n\n[block:code]\n{\n    \"codes\": [\n        {\n            \"code\": \"cy.get(\\\".active\\\").parentsUntil(\\\".nav\\\")\\n\",\n            \"language\": \"javascript\"\n        }\n    ]\n}\n[/block]\n\nThe commands above will display in the command log as:\n\n<img width=\"561\" alt=\"screen shot 2017-03-23 at 2 37 31 pm\" src=\"https://cloud.githubusercontent.com/assets/1271364/24264301/516d5fd6-0fd6-11e7-9ab7-b55b211acde3.png\">\n\nWhen clicking on `parentsUntil` within the command log, the console outputs the following:\n\n<img width=\"523\" alt=\"screen shot 2017-03-23 at 2 37 39 pm\" src=\"https://cloud.githubusercontent.com/assets/1271364/24264309/60cc75de-0fd6-11e7-97b4-d0aa184b0ba6.png\">\n\n***\n\n# Related\n\n- [parent](https://on.cypress.io/api/parent)\n- [parents](https://on.cypress.io/api/parents)\n- [prevUntil](https://on.cypress.io/api/prevuntil)\n- [nextUntil](https://on.cypress.io/api/nextuntil)","excerpt":"Get all ancestors of the DOM elements until another element","slug":"parentsuntil","type":"basic","title":"parentsUntil"}

parentsUntil

Get all ancestors of the DOM elements until another element

Get all ancestors of each DOM element in the set of matched DOM elements up to, but not including, the element matched by the selector | | | |--- | --- | | **Returns** | the new DOM element(s) found by the command. | | **Timeout** | `cy.parentsUntil` will retry for the duration of the [`defaultCommandTimeout`](https://on.cypress.io/guides/configuration#timeouts) | *** # [cy.parentsUntil( *selector* )](#usage) Get all of the ancestors of the elements until the selector. *** # [cy.parentsUntil( *selector*, *filter )](#filter-usage) When a filter is provided, it retrieves all of the ancestors up until the selector only if it matches that filter. *** # [cy.parentsUntil( *element* )](#element-usage) Get all of the ancestors of the elements until the DOM node or jQuery object. *** # [cy.parentsUntil( *element*, *filter )](#element-filter-usage) When a filter is provided, it retrieves all of the ancestors up until the DOM node or jQuery object only if it matches that filter. *** # Options Pass in an options object to change the default behavior of `cy.parentsUntil`. **cy.parentsUntil( *selector*, *options* )** **cy.parentsUntil( *selector*, *filter*, *options* )** **cy.parentsUntil( *element*, *options* )** **cy.parentsUntil( *element*, *filter*, *options* )** Option | Default | Notes --- | --- | --- `log` | `true` | whether to display command in command log `timeout` | [`defaultCommandTimeout`](https://on.cypress.io/guides/configuration#timeouts) | Total time to retry getting the element *** # Usage ## Find all of the `.active` element's ancestors until `.nav` [block:code] { "codes": [ { "code": "<ul class=\"nav\">\n <li>\n <a href=\"#\">Clothes</a>\n <ul class=\"menu\">\n <li>\n <a href=\"/shirts\">Shirts</a>\n </li>\n <li class=\"active\">\n <a href=\"/pants\">Pants</a>\n </li>\n </ul>\n </li>\n</ul>\n", "language": "html" } ] } [/block] [block:code] { "codes": [ { "code": "//returns [ul.menu, li]\ncy.get(\".active\").parentsUntil(\".nav\")\n", "language": "javascript" } ] } [/block] *** # Command Log ## Find all of the `.active` element's ancestors until `.nav` [block:code] { "codes": [ { "code": "cy.get(\".active\").parentsUntil(\".nav\")\n", "language": "javascript" } ] } [/block] The commands above will display in the command log as: <img width="561" alt="screen shot 2017-03-23 at 2 37 31 pm" src="https://cloud.githubusercontent.com/assets/1271364/24264301/516d5fd6-0fd6-11e7-9ab7-b55b211acde3.png"> When clicking on `parentsUntil` within the command log, the console outputs the following: <img width="523" alt="screen shot 2017-03-23 at 2 37 39 pm" src="https://cloud.githubusercontent.com/assets/1271364/24264309/60cc75de-0fd6-11e7-97b4-d0aa184b0ba6.png"> *** # Related - [parent](https://on.cypress.io/api/parent) - [parents](https://on.cypress.io/api/parents) - [prevUntil](https://on.cypress.io/api/prevuntil) - [nextUntil](https://on.cypress.io/api/nextuntil)