playwright-ruby-client 1.51.0 → 1.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/documentation/docs/api/locator.md +1 -1
- data/documentation/docs/api/locator_assertions.md +53 -4
- data/documentation/docs/api/route.md +2 -0
- data/documentation/docs/include/api_coverage.md +2 -0
- data/lib/playwright/javascript/value_parser.rb +54 -2
- data/lib/playwright/locator_assertions_impl.rb +33 -0
- data/lib/playwright/locator_impl.rb +2 -1
- data/lib/playwright/version.rb +2 -2
- data/lib/playwright_api/api_request.rb +1 -0
- data/lib/playwright_api/browser_context.rb +10 -10
- data/lib/playwright_api/locator.rb +2 -2
- data/lib/playwright_api/locator_assertions.rb +46 -2
- data/lib/playwright_api/page.rb +10 -10
- data/lib/playwright_api/request.rb +4 -4
- data/lib/playwright_api/route.rb +2 -0
- data/lib/playwright_api/worker.rb +4 -4
- data/sig/playwright.rbs +3 -1
- metadata +4 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 6bcda43c43e75e840a897607afdc89d2b01cd463b937944ad33522d7a36713a1
         | 
| 4 | 
            +
              data.tar.gz: f92d747e11ef4c55cc9769bc053194a18c2183d13862fe1c7bbb641a6ab6cbfd
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 246d118dcb834c6d6a266286c1b2758d57e1480f8c40ffec06e2d08401f1e0b87934a8d1701c400053a5a226a81c22a2a4994ce3615a21e46d8ec689cd1289a2
         | 
| 7 | 
            +
              data.tar.gz: 1537e5f55e68ff8c11c5d23a1dd1cb973e6aa3df9f8d528e6e93ecc4c744b663a75b8e0cafd38650b39d50d33cd930c3b1c87ebd889ef0cdb7a1481a7ee1c0c2
         | 
| @@ -116,6 +116,15 @@ expect(locator).not_to be_visible(timeout: nil, visible: nil) | |
| 116 116 |  | 
| 117 117 | 
             
            The opposite of [LocatorAssertions#to_be_visible](./locator_assertions#to_be_visible).
         | 
| 118 118 |  | 
| 119 | 
            +
            ## not_to_contain_class
         | 
| 120 | 
            +
             | 
| 121 | 
            +
            ```ruby
         | 
| 122 | 
            +
            expect(locator).not_to contain_class(expected, timeout: nil)
         | 
| 123 | 
            +
            ```
         | 
| 124 | 
            +
             | 
| 125 | 
            +
             | 
| 126 | 
            +
            The opposite of [LocatorAssertions#to_contain_class](./locator_assertions#to_contain_class).
         | 
| 127 | 
            +
             | 
| 119 128 | 
             
            ## not_to_contain_text
         | 
| 120 129 |  | 
| 121 130 | 
             
            ```ruby
         | 
| @@ -436,6 +445,43 @@ expect( | |
| 436 445 | 
             
            ).to be_visible
         | 
| 437 446 | 
             
            ```
         | 
| 438 447 |  | 
| 448 | 
            +
            ## to_contain_class
         | 
| 449 | 
            +
             | 
| 450 | 
            +
            ```ruby
         | 
| 451 | 
            +
            expect(locator).to contain_class(expected, timeout: nil)
         | 
| 452 | 
            +
            ```
         | 
| 453 | 
            +
             | 
| 454 | 
            +
             | 
| 455 | 
            +
            Ensures the [Locator](./locator) points to an element with given CSS classes. All classes from the asserted value, separated by spaces, must be present in the [Element.classList](https://developer.mozilla.org/en-US/docs/Web/API/Element/classList) in any order.
         | 
| 456 | 
            +
             | 
| 457 | 
            +
            **Usage**
         | 
| 458 | 
            +
             | 
| 459 | 
            +
            ```html
         | 
| 460 | 
            +
            <div class='middle selected row' id='component'></div>
         | 
| 461 | 
            +
            ```
         | 
| 462 | 
            +
             | 
| 463 | 
            +
            ```ruby
         | 
| 464 | 
            +
            locator = page.locator("#component")
         | 
| 465 | 
            +
            expect(locator).to contain_class("middle selected row")
         | 
| 466 | 
            +
            expect(locator).to contain_class("selected")
         | 
| 467 | 
            +
            expect(locator).to contain_class("row middle")
         | 
| 468 | 
            +
            ```
         | 
| 469 | 
            +
             | 
| 470 | 
            +
            When an array is passed, the method asserts that the list of elements located matches the corresponding list of expected class lists. Each element's class attribute is matched against the corresponding class in the array:
         | 
| 471 | 
            +
             | 
| 472 | 
            +
            ```html
         | 
| 473 | 
            +
            <div class='list'></div>
         | 
| 474 | 
            +
              <div class='component inactive'></div>
         | 
| 475 | 
            +
              <div class='component active'></div>
         | 
| 476 | 
            +
              <div class='component inactive'></div>
         | 
| 477 | 
            +
            </div>
         | 
| 478 | 
            +
            ```
         | 
| 479 | 
            +
             | 
| 480 | 
            +
            ```ruby
         | 
| 481 | 
            +
            locator = page.locator(".list > .component")
         | 
| 482 | 
            +
            expect(locator).to contain_class(["inactive", "active", "inactive"])
         | 
| 483 | 
            +
            ```
         | 
| 484 | 
            +
             | 
| 439 485 | 
             
            ## to_contain_text
         | 
| 440 486 |  | 
| 441 487 | 
             
            ```ruby
         | 
| @@ -561,7 +607,7 @@ expect(locator).to have_class(expected, timeout: nil) | |
| 561 607 | 
             
            ```
         | 
| 562 608 |  | 
| 563 609 |  | 
| 564 | 
            -
            Ensures the [Locator](./locator) points to an element with given CSS classes. When a string is provided, it must fully match the element's `class` attribute. To match individual classes  | 
| 610 | 
            +
            Ensures the [Locator](./locator) points to an element with given CSS classes. When a string is provided, it must fully match the element's `class` attribute. To match individual classes use [LocatorAssertions#to_contain_class](./locator_assertions#to_contain_class).
         | 
| 565 611 |  | 
| 566 612 | 
             
            **Usage**
         | 
| 567 613 |  | 
| @@ -569,10 +615,13 @@ Ensures the [Locator](./locator) points to an element with given CSS classes. Wh | |
| 569 615 | 
             
            <div class='middle selected row' id='component'></div>
         | 
| 570 616 | 
             
            ```
         | 
| 571 617 |  | 
| 572 | 
            -
            ``` | 
| 618 | 
            +
            ```python title="example_a596f37c41d76277b59ed7eb46969c178c89770d0da91bdff20f36d438aa32cd.py"
         | 
| 619 | 
            +
            from playwright.sync_api import expect
         | 
| 620 | 
            +
             | 
| 573 621 | 
             
            locator = page.locator("#component")
         | 
| 574 | 
            -
            expect(locator). | 
| 575 | 
            -
            expect(locator). | 
| 622 | 
            +
            expect(locator).to_have_class("middle selected row")
         | 
| 623 | 
            +
            expect(locator).to_have_class(re.compile(r"(^|\\s)selected(\\s|$)"))
         | 
| 624 | 
            +
             | 
| 576 625 | 
             
            ```
         | 
| 577 626 |  | 
| 578 627 | 
             
            When an array is passed, the method asserts that the list of elements located matches the corresponding list of expected class values. Each element's class attribute is matched against the corresponding string or regular expression in the array:
         | 
| @@ -49,6 +49,8 @@ The `headers` option applies to both the routed request and any redirects it ini | |
| 49 49 |  | 
| 50 50 | 
             
            [Route#continue](./route#continue) will immediately send the request to the network, other matching handlers won't be invoked. Use [Route#fallback](./route#fallback) If you want next matching handler in the chain to be invoked.
         | 
| 51 51 |  | 
| 52 | 
            +
            **NOTE**: The `Cookie` header cannot be overridden using this method. If a value is provided, it will be ignored, and the cookie will be loaded from the browser's cookie store. To set custom cookies, use [BrowserContext#add_cookies](./browser_context#add_cookies).
         | 
| 53 | 
            +
             | 
| 52 54 | 
             
            ## fallback
         | 
| 53 55 |  | 
| 54 56 | 
             
            ```
         | 
| @@ -563,6 +563,7 @@ | |
| 563 563 | 
             
            * not_to_be_hidden
         | 
| 564 564 | 
             
            * not_to_be_in_viewport
         | 
| 565 565 | 
             
            * not_to_be_visible
         | 
| 566 | 
            +
            * not_to_contain_class
         | 
| 566 567 | 
             
            * not_to_contain_text
         | 
| 567 568 | 
             
            * not_to_have_accessible_description
         | 
| 568 569 | 
             
            * not_to_have_accessible_error_message
         | 
| @@ -588,6 +589,7 @@ | |
| 588 589 | 
             
            * to_be_hidden
         | 
| 589 590 | 
             
            * to_be_in_viewport
         | 
| 590 591 | 
             
            * to_be_visible
         | 
| 592 | 
            +
            * to_contain_class
         | 
| 591 593 | 
             
            * to_contain_text
         | 
| 592 594 | 
             
            * to_have_accessible_description
         | 
| 593 595 | 
             
            * to_have_accessible_error_message
         | 
| @@ -1,4 +1,5 @@ | |
| 1 | 
            -
            require ' | 
| 1 | 
            +
            require 'base64'
         | 
| 2 | 
            +
            require 'time'
         | 
| 2 3 |  | 
| 3 4 | 
             
            module Playwright
         | 
| 4 5 | 
             
              module JavaScript
         | 
| @@ -45,7 +46,7 @@ module Playwright | |
| 45 46 | 
             
                    end
         | 
| 46 47 |  | 
| 47 48 | 
             
                    if hash.key?('d')
         | 
| 48 | 
            -
                      return  | 
| 49 | 
            +
                      return Time.parse(hash['d'])
         | 
| 49 50 | 
             
                    end
         | 
| 50 51 |  | 
| 51 52 | 
             
                    if hash.key?('u')
         | 
| @@ -105,6 +106,57 @@ module Playwright | |
| 105 106 | 
             
                      return @handles[hash['h']]
         | 
| 106 107 | 
             
                    end
         | 
| 107 108 |  | 
| 109 | 
            +
                    if hash.key?('ta')
         | 
| 110 | 
            +
                      encoded_bytes = hash['ta']['b']
         | 
| 111 | 
            +
                      decoded_bytes = Base64.strict_decode64(encoded_bytes)
         | 
| 112 | 
            +
                      array_type = hash['ta']['k']
         | 
| 113 | 
            +
             | 
| 114 | 
            +
                      if array_type == 'i8'
         | 
| 115 | 
            +
                        word_size = 1
         | 
| 116 | 
            +
                        unpack_format = 'c*' # signed char
         | 
| 117 | 
            +
                      elsif array_type == 'ui8' || array_type == 'ui8c'
         | 
| 118 | 
            +
                        word_size = 1
         | 
| 119 | 
            +
                        unpack_format = 'C*' # unsigned char
         | 
| 120 | 
            +
                      elsif array_type == 'i16'
         | 
| 121 | 
            +
                        word_size = 2
         | 
| 122 | 
            +
                        unpack_format = 's<*' # signed short, little-endian
         | 
| 123 | 
            +
                      elsif array_type == 'ui16'
         | 
| 124 | 
            +
                        word_size = 2
         | 
| 125 | 
            +
                        unpack_format = 'S<*' # unsigned short, little-endian
         | 
| 126 | 
            +
                      elsif array_type == 'i32'
         | 
| 127 | 
            +
                        word_size = 4
         | 
| 128 | 
            +
                        unpack_format = 'l<*' # signed long, little-endian
         | 
| 129 | 
            +
                      elsif array_type == 'ui32'
         | 
| 130 | 
            +
                        word_size = 4
         | 
| 131 | 
            +
                        unpack_format = 'L<*' # unsigned long, little-endian
         | 
| 132 | 
            +
                      elsif array_type == 'f32'
         | 
| 133 | 
            +
                        word_size = 4
         | 
| 134 | 
            +
                        unpack_format = 'e*' # float, little-endian
         | 
| 135 | 
            +
                      elsif array_type == 'f64'
         | 
| 136 | 
            +
                        word_size = 8
         | 
| 137 | 
            +
                        unpack_format = 'E*' # double, little-endian
         | 
| 138 | 
            +
                      elsif array_type == 'bi64'
         | 
| 139 | 
            +
                        word_size = 8
         | 
| 140 | 
            +
                        unpack_format = 'q<*' # signed long long, little-endian
         | 
| 141 | 
            +
                      elsif array_type == 'bui64'
         | 
| 142 | 
            +
                        word_size = 8
         | 
| 143 | 
            +
                        unpack_format = 'Q<*' # unsigned long long, little-endian
         | 
| 144 | 
            +
                      else
         | 
| 145 | 
            +
                        raise ArgumentError, "Unsupported array type: #{array_type}"
         | 
| 146 | 
            +
                      end
         | 
| 147 | 
            +
             | 
| 148 | 
            +
                      byte_len = decoded_bytes.bytesize
         | 
| 149 | 
            +
                      if byte_len.zero?
         | 
| 150 | 
            +
                        return []
         | 
| 151 | 
            +
                      end
         | 
| 152 | 
            +
             | 
| 153 | 
            +
                      if byte_len % word_size != 0
         | 
| 154 | 
            +
                        raise ArgumentError, "Decoded bytes length #{byte_len} is not a multiple of word size #{word_size} for type #{array_type}"
         | 
| 155 | 
            +
                      end
         | 
| 156 | 
            +
             | 
| 157 | 
            +
                      return decoded_bytes.unpack(unpack_format)
         | 
| 158 | 
            +
                    end
         | 
| 159 | 
            +
             | 
| 108 160 | 
             
                    raise ArgumentError.new("Unexpected value: #{hash}")
         | 
| 109 161 | 
             
                  end
         | 
| 110 162 | 
             
                end
         | 
| @@ -232,6 +232,39 @@ module Playwright | |
| 232 232 | 
             
                end
         | 
| 233 233 | 
             
                _define_negation :to_have_class
         | 
| 234 234 |  | 
| 235 | 
            +
                def to_contain_class(expected, timeout: nil)
         | 
| 236 | 
            +
                  if expected.is_a?(Enumerable)
         | 
| 237 | 
            +
                    if expected.any? { |e| e.is_a?(Regexp) }
         | 
| 238 | 
            +
                      raise ArgumentError.new('"expected" argument in toContainClass cannot contain RegExp values')
         | 
| 239 | 
            +
                    end
         | 
| 240 | 
            +
                    expected_text = to_expected_text_values(expected)
         | 
| 241 | 
            +
                    expect_impl(
         | 
| 242 | 
            +
                      "to.contain.class.array",
         | 
| 243 | 
            +
                      {
         | 
| 244 | 
            +
                        expectedText: expected_text,
         | 
| 245 | 
            +
                        timeout: timeout,
         | 
| 246 | 
            +
                      },
         | 
| 247 | 
            +
                      expected,
         | 
| 248 | 
            +
                      "Locator expected to contain class names"
         | 
| 249 | 
            +
                    )
         | 
| 250 | 
            +
                  else # Single string
         | 
| 251 | 
            +
                    if expected.is_a?(Regexp)
         | 
| 252 | 
            +
                      raise ArgumentError.new('"expected" argument in toContainClass cannot be a RegExp value')
         | 
| 253 | 
            +
                    end
         | 
| 254 | 
            +
                    expected_text = to_expected_text_values([expected])
         | 
| 255 | 
            +
                    expect_impl(
         | 
| 256 | 
            +
                      "to.contain.class",
         | 
| 257 | 
            +
                      {
         | 
| 258 | 
            +
                        expectedText: expected_text,
         | 
| 259 | 
            +
                        timeout: timeout,
         | 
| 260 | 
            +
                      },
         | 
| 261 | 
            +
                      expected,
         | 
| 262 | 
            +
                      "Locator expected to contain class"
         | 
| 263 | 
            +
                    )
         | 
| 264 | 
            +
                  end
         | 
| 265 | 
            +
                end
         | 
| 266 | 
            +
                _define_negation :to_contain_class
         | 
| 267 | 
            +
             | 
| 235 268 | 
             
                def to_have_count(count, timeout: nil)
         | 
| 236 269 | 
             
                  expect_impl(
         | 
| 237 270 | 
             
                    "to.have.count",
         | 
| @@ -397,10 +397,11 @@ module Playwright | |
| 397 397 | 
             
                  end
         | 
| 398 398 | 
             
                end
         | 
| 399 399 |  | 
| 400 | 
            -
                def aria_snapshot(timeout: nil)
         | 
| 400 | 
            +
                def aria_snapshot(timeout: nil, ref: nil)
         | 
| 401 401 | 
             
                  @frame.channel.send_message_to_server('ariaSnapshot', {
         | 
| 402 402 | 
             
                    selector: @selector,
         | 
| 403 403 | 
             
                    timeout: timeout,
         | 
| 404 | 
            +
                    ref: ref,
         | 
| 404 405 | 
             
                  }.compact)
         | 
| 405 406 | 
             
                end
         | 
| 406 407 |  | 
    
        data/lib/playwright/version.rb
    CHANGED
    
    
| @@ -463,16 +463,6 @@ module Playwright | |
| 463 463 | 
             
                  raise NotImplementedError.new('wait_for_event is not implemented yet.')
         | 
| 464 464 | 
             
                end
         | 
| 465 465 |  | 
| 466 | 
            -
                # @nodoc
         | 
| 467 | 
            -
                def owner_page=(req)
         | 
| 468 | 
            -
                  wrap_impl(@impl.owner_page=(unwrap_impl(req)))
         | 
| 469 | 
            -
                end
         | 
| 470 | 
            -
             | 
| 471 | 
            -
                # @nodoc
         | 
| 472 | 
            -
                def options=(req)
         | 
| 473 | 
            -
                  wrap_impl(@impl.options=(unwrap_impl(req)))
         | 
| 474 | 
            -
                end
         | 
| 475 | 
            -
             | 
| 476 466 | 
             
                # @nodoc
         | 
| 477 467 | 
             
                def enable_debug_console!
         | 
| 478 468 | 
             
                  wrap_impl(@impl.enable_debug_console!)
         | 
| @@ -488,6 +478,16 @@ module Playwright | |
| 488 478 | 
             
                  wrap_impl(@impl.browser=(unwrap_impl(req)))
         | 
| 489 479 | 
             
                end
         | 
| 490 480 |  | 
| 481 | 
            +
                # @nodoc
         | 
| 482 | 
            +
                def options=(req)
         | 
| 483 | 
            +
                  wrap_impl(@impl.options=(unwrap_impl(req)))
         | 
| 484 | 
            +
                end
         | 
| 485 | 
            +
             | 
| 486 | 
            +
                # @nodoc
         | 
| 487 | 
            +
                def owner_page=(req)
         | 
| 488 | 
            +
                  wrap_impl(@impl.owner_page=(unwrap_impl(req)))
         | 
| 489 | 
            +
                end
         | 
| 490 | 
            +
             | 
| 491 491 | 
             
                # -- inherited from EventEmitter --
         | 
| 492 492 | 
             
                # @nodoc
         | 
| 493 493 | 
             
                def on(event, callback)
         | 
| @@ -103,8 +103,8 @@ module Playwright | |
| 103 103 | 
             
                #   - listitem:
         | 
| 104 104 | 
             
                #     - link "About"
         | 
| 105 105 | 
             
                # ```
         | 
| 106 | 
            -
                def aria_snapshot(timeout: nil)
         | 
| 107 | 
            -
                  wrap_impl(@impl.aria_snapshot(timeout: unwrap_impl(timeout)))
         | 
| 106 | 
            +
                def aria_snapshot(ref: nil, timeout: nil)
         | 
| 107 | 
            +
                  wrap_impl(@impl.aria_snapshot(ref: unwrap_impl(ref), timeout: unwrap_impl(timeout)))
         | 
| 108 108 | 
             
                end
         | 
| 109 109 |  | 
| 110 110 | 
             
                #
         | 
| @@ -72,6 +72,12 @@ module Playwright | |
| 72 72 | 
             
                  wrap_impl(@impl.not_to_be_visible(timeout: unwrap_impl(timeout), visible: unwrap_impl(visible)))
         | 
| 73 73 | 
             
                end
         | 
| 74 74 |  | 
| 75 | 
            +
                #
         | 
| 76 | 
            +
                # The opposite of [`method: LocatorAssertions.toContainClass`].
         | 
| 77 | 
            +
                def not_to_contain_class(expected, timeout: nil)
         | 
| 78 | 
            +
                  wrap_impl(@impl.not_to_contain_class(unwrap_impl(expected), timeout: unwrap_impl(timeout)))
         | 
| 79 | 
            +
                end
         | 
| 80 | 
            +
             | 
| 75 81 | 
             
                #
         | 
| 76 82 | 
             
                # The opposite of [`method: LocatorAssertions.toContainText`].
         | 
| 77 83 | 
             
                def not_to_contain_text(expected, ignoreCase: nil, timeout: nil, useInnerText: nil)
         | 
| @@ -328,6 +334,44 @@ module Playwright | |
| 328 334 | 
             
                  wrap_impl(@impl.to_be_visible(timeout: unwrap_impl(timeout), visible: unwrap_impl(visible)))
         | 
| 329 335 | 
             
                end
         | 
| 330 336 |  | 
| 337 | 
            +
                #
         | 
| 338 | 
            +
                # Ensures the `Locator` points to an element with given CSS classes. All classes from the asserted value, separated by spaces, must be present in the [Element.classList](https://developer.mozilla.org/en-US/docs/Web/API/Element/classList) in any order.
         | 
| 339 | 
            +
                #
         | 
| 340 | 
            +
                # **Usage**
         | 
| 341 | 
            +
                #
         | 
| 342 | 
            +
                # ```html
         | 
| 343 | 
            +
                # <div class='middle selected row' id='component'></div>
         | 
| 344 | 
            +
                # ```
         | 
| 345 | 
            +
                #
         | 
| 346 | 
            +
                # ```python sync
         | 
| 347 | 
            +
                # from playwright.sync_api import expect
         | 
| 348 | 
            +
                #
         | 
| 349 | 
            +
                # locator = page.locator("#component")
         | 
| 350 | 
            +
                # expect(locator).to_contain_class("middle selected row")
         | 
| 351 | 
            +
                # expect(locator).to_contain_class("selected")
         | 
| 352 | 
            +
                # expect(locator).to_contain_class("row middle")
         | 
| 353 | 
            +
                # ```
         | 
| 354 | 
            +
                #
         | 
| 355 | 
            +
                # When an array is passed, the method asserts that the list of elements located matches the corresponding list of expected class lists. Each element's class attribute is matched against the corresponding class in the array:
         | 
| 356 | 
            +
                #
         | 
| 357 | 
            +
                # ```html
         | 
| 358 | 
            +
                # <div class='list'></div>
         | 
| 359 | 
            +
                #   <div class='component inactive'></div>
         | 
| 360 | 
            +
                #   <div class='component active'></div>
         | 
| 361 | 
            +
                #   <div class='component inactive'></div>
         | 
| 362 | 
            +
                # </div>
         | 
| 363 | 
            +
                # ```
         | 
| 364 | 
            +
                #
         | 
| 365 | 
            +
                # ```python sync
         | 
| 366 | 
            +
                # from playwright.sync_api import expect
         | 
| 367 | 
            +
                #
         | 
| 368 | 
            +
                # locator = page.locator("list > .component")
         | 
| 369 | 
            +
                # await expect(locator).to_contain_class(["inactive", "active", "inactive"])
         | 
| 370 | 
            +
                # ```
         | 
| 371 | 
            +
                def to_contain_class(expected, timeout: nil)
         | 
| 372 | 
            +
                  wrap_impl(@impl.to_contain_class(unwrap_impl(expected), timeout: unwrap_impl(timeout)))
         | 
| 373 | 
            +
                end
         | 
| 374 | 
            +
             | 
| 331 375 | 
             
                #
         | 
| 332 376 | 
             
                # Ensures the `Locator` points to an element that contains the given text. All nested elements will be considered when computing the text content of the element. You can use regular expressions for the value as well.
         | 
| 333 377 | 
             
                #
         | 
| @@ -439,7 +483,7 @@ module Playwright | |
| 439 483 | 
             
                end
         | 
| 440 484 |  | 
| 441 485 | 
             
                #
         | 
| 442 | 
            -
                # Ensures the `Locator` points to an element with given CSS classes. When a string is provided, it must fully match the element's `class` attribute. To match individual classes  | 
| 486 | 
            +
                # Ensures the `Locator` points to an element with given CSS classes. When a string is provided, it must fully match the element's `class` attribute. To match individual classes use [`method: LocatorAssertions.toContainClass`].
         | 
| 443 487 | 
             
                #
         | 
| 444 488 | 
             
                # **Usage**
         | 
| 445 489 | 
             
                #
         | 
| @@ -451,8 +495,8 @@ module Playwright | |
| 451 495 | 
             
                # from playwright.sync_api import expect
         | 
| 452 496 | 
             
                #
         | 
| 453 497 | 
             
                # locator = page.locator("#component")
         | 
| 454 | 
            -
                # expect(locator).to_have_class(re.compile(r"(^|\\s)selected(\\s|$)"))
         | 
| 455 498 | 
             
                # expect(locator).to_have_class("middle selected row")
         | 
| 499 | 
            +
                # expect(locator).to_have_class(re.compile(r"(^|\\s)selected(\\s|$)"))
         | 
| 456 500 | 
             
                # ```
         | 
| 457 501 | 
             
                #
         | 
| 458 502 | 
             
                # When an array is passed, the method asserts that the list of elements located matches the corresponding list of expected class values. Each element's class attribute is matched against the corresponding string or regular expression in the array:
         | 
    
        data/lib/playwright_api/page.rb
    CHANGED
    
    | @@ -1792,16 +1792,6 @@ module Playwright | |
| 1792 1792 | 
             
                  raise NotImplementedError.new('wait_for_event is not implemented yet.')
         | 
| 1793 1793 | 
             
                end
         | 
| 1794 1794 |  | 
| 1795 | 
            -
                # @nodoc
         | 
| 1796 | 
            -
                def owned_context=(req)
         | 
| 1797 | 
            -
                  wrap_impl(@impl.owned_context=(unwrap_impl(req)))
         | 
| 1798 | 
            -
                end
         | 
| 1799 | 
            -
             | 
| 1800 | 
            -
                # @nodoc
         | 
| 1801 | 
            -
                def guid
         | 
| 1802 | 
            -
                  wrap_impl(@impl.guid)
         | 
| 1803 | 
            -
                end
         | 
| 1804 | 
            -
             | 
| 1805 1795 | 
             
                # @nodoc
         | 
| 1806 1796 | 
             
                def start_js_coverage(resetOnNavigation: nil, reportAnonymousScripts: nil)
         | 
| 1807 1797 | 
             
                  wrap_impl(@impl.start_js_coverage(resetOnNavigation: unwrap_impl(resetOnNavigation), reportAnonymousScripts: unwrap_impl(reportAnonymousScripts)))
         | 
| @@ -1822,6 +1812,16 @@ module Playwright | |
| 1822 1812 | 
             
                  wrap_impl(@impl.stop_css_coverage)
         | 
| 1823 1813 | 
             
                end
         | 
| 1824 1814 |  | 
| 1815 | 
            +
                # @nodoc
         | 
| 1816 | 
            +
                def owned_context=(req)
         | 
| 1817 | 
            +
                  wrap_impl(@impl.owned_context=(unwrap_impl(req)))
         | 
| 1818 | 
            +
                end
         | 
| 1819 | 
            +
             | 
| 1820 | 
            +
                # @nodoc
         | 
| 1821 | 
            +
                def guid
         | 
| 1822 | 
            +
                  wrap_impl(@impl.guid)
         | 
| 1823 | 
            +
                end
         | 
| 1824 | 
            +
             | 
| 1825 1825 | 
             
                # -- inherited from EventEmitter --
         | 
| 1826 1826 | 
             
                # @nodoc
         | 
| 1827 1827 | 
             
                def on(event, callback)
         | 
| @@ -196,13 +196,13 @@ module Playwright | |
| 196 196 | 
             
                end
         | 
| 197 197 |  | 
| 198 198 | 
             
                # @nodoc
         | 
| 199 | 
            -
                def  | 
| 200 | 
            -
                  wrap_impl(@impl. | 
| 199 | 
            +
                def header_values(name)
         | 
| 200 | 
            +
                  wrap_impl(@impl.header_values(unwrap_impl(name)))
         | 
| 201 201 | 
             
                end
         | 
| 202 202 |  | 
| 203 203 | 
             
                # @nodoc
         | 
| 204 | 
            -
                def  | 
| 205 | 
            -
                  wrap_impl(@impl. | 
| 204 | 
            +
                def apply_fallback_overrides(overrides)
         | 
| 205 | 
            +
                  wrap_impl(@impl.apply_fallback_overrides(unwrap_impl(overrides)))
         | 
| 206 206 | 
             
                end
         | 
| 207 207 |  | 
| 208 208 | 
             
                # -- inherited from EventEmitter --
         | 
    
        data/lib/playwright_api/route.rb
    CHANGED
    
    | @@ -35,6 +35,8 @@ module Playwright | |
| 35 35 | 
             
                # The `headers` option applies to both the routed request and any redirects it initiates. However, `url`, `method`, and `postData` only apply to the original request and are not carried over to redirected requests.
         | 
| 36 36 | 
             
                #
         | 
| 37 37 | 
             
                # [`method: Route.continue`] will immediately send the request to the network, other matching handlers won't be invoked. Use [`method: Route.fallback`] If you want next matching handler in the chain to be invoked.
         | 
| 38 | 
            +
                #
         | 
| 39 | 
            +
                # **NOTE**: The `Cookie` header cannot be overridden using this method. If a value is provided, it will be ignored, and the cookie will be loaded from the browser's cookie store. To set custom cookies, use [`method: BrowserContext.addCookies`].
         | 
| 38 40 | 
             
                def continue(headers: nil, method: nil, postData: nil, url: nil)
         | 
| 39 41 | 
             
                  wrap_impl(@impl.continue(headers: unwrap_impl(headers), method: unwrap_impl(method), postData: unwrap_impl(postData), url: unwrap_impl(url)))
         | 
| 40 42 | 
             
                end
         | 
| @@ -47,13 +47,13 @@ module Playwright | |
| 47 47 | 
             
                end
         | 
| 48 48 |  | 
| 49 49 | 
             
                # @nodoc
         | 
| 50 | 
            -
                def  | 
| 51 | 
            -
                  wrap_impl(@impl. | 
| 50 | 
            +
                def context=(req)
         | 
| 51 | 
            +
                  wrap_impl(@impl.context=(unwrap_impl(req)))
         | 
| 52 52 | 
             
                end
         | 
| 53 53 |  | 
| 54 54 | 
             
                # @nodoc
         | 
| 55 | 
            -
                def  | 
| 56 | 
            -
                  wrap_impl(@impl. | 
| 55 | 
            +
                def page=(req)
         | 
| 56 | 
            +
                  wrap_impl(@impl.page=(unwrap_impl(req)))
         | 
| 57 57 | 
             
                end
         | 
| 58 58 |  | 
| 59 59 | 
             
                # -- inherited from EventEmitter --
         | 
    
        data/sig/playwright.rbs
    CHANGED
    
    | @@ -456,7 +456,7 @@ module Playwright | |
| 456 456 | 
             
                def all_inner_texts: -> Array[untyped]
         | 
| 457 457 | 
             
                def all_text_contents: -> Array[untyped]
         | 
| 458 458 | 
             
                def and: (Locator locator) -> Locator
         | 
| 459 | 
            -
                def aria_snapshot: (?timeout: Float) -> String
         | 
| 459 | 
            +
                def aria_snapshot: (?ref: bool, ?timeout: Float) -> String
         | 
| 460 460 | 
             
                def blur: (?timeout: Float) -> void
         | 
| 461 461 | 
             
                def bounding_box: (?timeout: Float) -> (nil | Hash[untyped, untyped])
         | 
| 462 462 | 
             
                def check: (?force: bool, ?noWaitAfter: bool, ?position: Hash[untyped, untyped], ?timeout: Float, ?trial: bool) -> void
         | 
| @@ -570,6 +570,7 @@ module Playwright | |
| 570 570 | 
             
                def not_to_be_hidden: (?timeout: Float) -> void
         | 
| 571 571 | 
             
                def not_to_be_in_viewport: (?ratio: Float, ?timeout: Float) -> void
         | 
| 572 572 | 
             
                def not_to_be_visible: (?timeout: Float, ?visible: bool) -> void
         | 
| 573 | 
            +
                def not_to_contain_class: ((String | Array[untyped]) expected, ?timeout: Float) -> void
         | 
| 573 574 | 
             
                def not_to_contain_text: ((String | Regexp | Array[untyped] | Array[untyped] | Array[untyped]) expected, ?ignoreCase: bool, ?timeout: Float, ?useInnerText: bool) -> void
         | 
| 574 575 | 
             
                def not_to_have_accessible_description: ((String | Regexp) name, ?ignoreCase: bool, ?timeout: Float) -> void
         | 
| 575 576 | 
             
                def not_to_have_accessible_error_message: ((String | Regexp) errorMessage, ?ignoreCase: bool, ?timeout: Float) -> void
         | 
| @@ -595,6 +596,7 @@ module Playwright | |
| 595 596 | 
             
                def to_be_hidden: (?timeout: Float) -> void
         | 
| 596 597 | 
             
                def to_be_in_viewport: (?ratio: Float, ?timeout: Float) -> void
         | 
| 597 598 | 
             
                def to_be_visible: (?timeout: Float, ?visible: bool) -> void
         | 
| 599 | 
            +
                def to_contain_class: ((String | Array[untyped]) expected, ?timeout: Float) -> void
         | 
| 598 600 | 
             
                def to_contain_text: ((String | Regexp | Array[untyped] | Array[untyped] | Array[untyped]) expected, ?ignoreCase: bool, ?timeout: Float, ?useInnerText: bool) -> void
         | 
| 599 601 | 
             
                def to_have_accessible_description: ((String | Regexp) description, ?ignoreCase: bool, ?timeout: Float) -> void
         | 
| 600 602 | 
             
                def to_have_accessible_error_message: ((String | Regexp) errorMessage, ?ignoreCase: bool, ?timeout: Float) -> void
         | 
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: playwright-ruby-client
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.52.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - YusukeIwaki
         | 
| 8 8 | 
             
            bindir: exe
         | 
| 9 9 | 
             
            cert_chain: []
         | 
| 10 | 
            -
            date:  | 
| 10 | 
            +
            date: 1980-01-02 00:00:00.000000000 Z
         | 
| 11 11 | 
             
            dependencies:
         | 
| 12 12 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 13 13 | 
             
              name: concurrent-ruby
         | 
| @@ -407,7 +407,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 407 407 | 
             
                - !ruby/object:Gem::Version
         | 
| 408 408 | 
             
                  version: '0'
         | 
| 409 409 | 
             
            requirements: []
         | 
| 410 | 
            -
            rubygems_version: 3.6. | 
| 410 | 
            +
            rubygems_version: 3.6.7
         | 
| 411 411 | 
             
            specification_version: 4
         | 
| 412 | 
            -
            summary: The Ruby binding of playwright driver 1. | 
| 412 | 
            +
            summary: The Ruby binding of playwright driver 1.52.0
         | 
| 413 413 | 
             
            test_files: []
         |