-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Guidelines
- I understand that if I fail to provide all required details, this issue may be closed without review.
Description of the bug
Invoking ->is(':text') on a QueryPath object that contains a single text node throws.
This is the sixth PHP DOM library I'm trying this week, so with each new one I start by writing a couple of suitability tests. This is the first suitability test I wrote for querypath, and should serve as repro.
Expected: passing test
Actual:
Error: Call to undefined method DOMText::getElementsByTagName()
/home/rulatir/projects/cdatify/vendor/gravitypdf/querypath/src/CSS/DOMTraverser.php:595
/home/rulatir/projects/cdatify/vendor/gravitypdf/querypath/src/CSS/DOMTraverser.php:444
/home/rulatir/projects/cdatify/vendor/gravitypdf/querypath/src/CSS/DOMTraverser.php:144
/home/rulatir/projects/cdatify/vendor/gravitypdf/querypath/src/DOMQuery.php:161
/home/rulatir/projects/cdatify/vendor/gravitypdf/querypath/src/DOMQuery.php:1481
/home/rulatir/projects/cdatify/vendor/gravitypdf/querypath/src/Helpers/QueryChecks.php:66
/home/rulatir/projects/cdatify/tests/QueryPathSuitability.php:26
QueryPath version
3.2.3
PHP Version and environment (server type, cli provider etc., enclosing libraries and their respective versions)
8.3.4 (cli) on up-to-date Arch Linux
Minimal reproducible PHP+HTML snippet to replicate bug
<?php
use PHPUnit\Framework\TestCase;
class QueryPathSuitability extends TestCase
{
public function testCheckingNodeType(): void
{
$q = html5qp('<processing-container>whatever</processing-container>');
$container = $q->find('processing-container');
self::assertEquals(1, $container->length);
$contents = $container->contents();
self::assertEquals(1, $contents->length);
$firstItem = $contents->eq(0);
self::assertEquals(1, $firstItem->length);
// RELEVANT BIT STARTS HERE
// nonidiomatic way works
self::assertStringContainsString("Text", get_class($firstItem->toArray()[0]));
// idiomatic way throws
self::assertTrue($firstItem->is(':text'));
}
}Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working