File size: 3,338 Bytes
6778ee0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | import { test, expect } from '@playwright/test'
import {
checkWordPress,
WORDPRESS_PLUGIN_VERSION_SELECTOR
} from '../../installation_support/check-wordpress'
function mockDocument(html, hasMetaTag) {
return {
documentElement: { outerHTML: `<html>${html}</html>` },
querySelector: (selector) => {
if (selector === WORDPRESS_PLUGIN_VERSION_SELECTOR) {
return hasMetaTag ? {} : null
}
return null
}
}
}
test.describe('checkWordPress (wordpressPlugin, wordPressLikely)', () => {
test('handles document undefined', () => {
const result = checkWordPress(undefined)
expect(result.wordpressPlugin).toBe(false)
expect(result.wordpressLikely).toBe(false)
})
test('handles document.querySelector undefined', () => {
const document = { documentElement: { outerHTML: '<html></html>' } }
const result = checkWordPress(document)
expect(result.wordpressPlugin).toBe(false)
expect(result.wordpressLikely).toBe(false)
})
test('handles document.documentElement undefined', () => {
const document = { documentElement: undefined, querySelector: (_) => null }
const result = checkWordPress(document)
expect(result.wordpressPlugin).toBe(false)
expect(result.wordpressLikely).toBe(false)
})
test('both false when no WordPress indicators present', () => {
const document = mockDocument('<head></head><body></body>', false)
const result = checkWordPress(document)
expect(result.wordpressPlugin).toBe(false)
expect(result.wordpressLikely).toBe(false)
})
test('both true if WordPress plugin version meta tag detected', () => {
const document = mockDocument('<head></head><body></body>', true)
const result = checkWordPress(document)
expect(result.wordpressPlugin).toBe(true)
expect(result.wordpressLikely).toBe(true)
})
test('detects wordpressLikely by wp-content signature', () => {
const document = mockDocument(
'<head><script src="/wp-content/themes/mytheme/script.js"></script></head>',
false
)
const result = checkWordPress(document)
expect(result.wordpressPlugin).toBe(false)
expect(result.wordpressLikely).toBe(true)
})
test('detects wordpressLikely by wp-includes signature', () => {
const document = mockDocument(
'<head><link rel="stylesheet" href="/wp-includes/css/style.css"></head>',
false
)
const result = checkWordPress(document)
expect(result.wordpressPlugin).toBe(false)
expect(result.wordpressLikely).toBe(true)
})
test('detects wordpressLikely by wp-json signature', () => {
const document = mockDocument(
'<body><script>fetch("/wp-json/wp/v2/posts")</script></body>',
false
)
const result = checkWordPress(document)
expect(result.wordpressPlugin).toBe(false)
expect(result.wordpressLikely).toBe(true)
})
test('detects wordpressLikely by multiple signatures', () => {
const document = mockDocument(
`
<head>
<script src="/wp-content/themes/mytheme/script.js"></script>
</head>
<body>
<script>fetch("/wp-json/wp/v2/posts")</script>
</body>
`,
false
)
const result = checkWordPress(document)
expect(result.wordpressPlugin).toBe(false)
expect(result.wordpressLikely).toBe(true)
})
})
|