Skip to content

Add end-to-end test framework - #128

Merged
tnull merged 3 commits into
lightningdevkit:mainfrom
benthecarman:e2e-tests
Feb 24, 2026
Merged

Add end-to-end test framework#128
tnull merged 3 commits into
lightningdevkit:mainfrom
benthecarman:e2e-tests

Conversation

@benthecarman

Copy link
Copy Markdown
Collaborator

Closes#113

Introduces an e2e-tests crate that spins up real bitcoind and ldk-server processes to test the cli -> ldk-server flow. A build.rs automatically compiles ldk-server (with events-rabbitmq) and ldk-server-cli into a separate target directory, so tests work without manual pre-building.

Tests cover all cli commands and most rabbitmq events.

Claude helped with some of the boilerplate code

Found a small place we can make the bolt12 cli better

@ldk-reviews-bot

ldk-reviews-bot commented Feb 19, 2026

Copy link
Copy Markdown

I've assigned @valentinewallace as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

Comment threade2e-tests/src/lib.rs Outdated

impl TestBitcoind {
pub fn new() -> Self {
let bitcoind = Node::from_downloaded().unwrap();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we enable caching like we do in LDK/LDK Node so we don't needlessly hammer bitcoincore.org with every CI job?

},
#[command(about = "Return a BOLT12 offer for receiving payments")]
Bolt12Receive {
#[arg(help = "Description to attach along with the offer")]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why was this moved?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Something I noticed making the bolt12 test, we can't create an amountless bolt12 because the description is required but the amount is optional. I'll move to a separate commit to make it cleaner

Comment threade2e-tests/Cargo.toml
edition = "2021"

[dependencies]
corepc-node = { version = "0.10", features = ["download", "29_0"] }

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needs to drop the download feature now.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In CI we have set BITCOIND_SKIP_DOWNLOAD so it'll skip the download but we can keep this so it'll still download locally if you don't have it

https://github.com/rust-bitcoin/corepc/blob/master/node/build.rs#L78

Comment thread.github/workflows/integration-tests-events-rabbitmq.yml
Comment threade2e-tests/src/lib.rs
@benthecarman
benthecarmanforce-pushed the e2e-tests branch 2 times, most recently from ebf74ad to 397c4c5CompareFebruary 20, 2026 18:17
Since the amount was optional and the description was required, we were
unable to create an amountless bolt12 because the description was first
in the positional agruments.
@benthecarman

Copy link
Copy Markdown
CollaboratorAuthor

Got LSPS2 functionality and the forwarded payments tested now too!

tnull
tnull previously approved these changes Feb 23, 2026
@tnull

Copy link
Copy Markdown
Collaborator

Ah, seems CI is unhappy right now.

Introduces an e2e-tests crate that spins up real bitcoind and ldk-server
processes to test the cli -> ldk-server flow. A build.rs automatically compiles
ldk-server (with events-rabbitmq) and ldk-server-cli into a separate
target directory, so tests work without manual pre-building.
Tests cover all cli commands and rabbitmq events.
Claude helped with some of the boilerplate code
@benthecarman

Copy link
Copy Markdown
CollaboratorAuthor

working on more tests for here, but can always do as a follow up if we want to merge now

@tnull
tnull merged commit 57f9170 into lightningdevkit:mainFeb 24, 2026
7 checks passed
rsafier pushed a commit to rsafier/ldk-server that referenced this pull request Apr 20, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

End-to-end testing for ldk-server

3 participants

@benthecarman@ldk-reviews-bot@tnull
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Add end-to-end test framework by benthecarman · Pull Request #128 · lightningdevkit/ldk-server · GitHub
Skip to content

Add end-to-end test framework - #128

Merged
tnull merged 3 commits into
lightningdevkit:mainfrom
benthecarman:e2e-tests
Feb 24, 2026
Merged

Add end-to-end test framework#128
tnull merged 3 commits into
lightningdevkit:mainfrom
benthecarman:e2e-tests

Conversation

@benthecarman

Copy link
Copy Markdown
Collaborator

Closes#113

Introduces an e2e-tests crate that spins up real bitcoind and ldk-server processes to test the cli -> ldk-server flow. A build.rs automatically compiles ldk-server (with events-rabbitmq) and ldk-server-cli into a separate target directory, so tests work without manual pre-building.

Tests cover all cli commands and most rabbitmq events.

Claude helped with some of the boilerplate code

Found a small place we can make the bolt12 cli better

@ldk-reviews-bot

ldk-reviews-bot commented Feb 19, 2026

Copy link
Copy Markdown

I've assigned @valentinewallace as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

Comment threade2e-tests/src/lib.rs Outdated

impl TestBitcoind {
pub fn new() -> Self {
let bitcoind = Node::from_downloaded().unwrap();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we enable caching like we do in LDK/LDK Node so we don't needlessly hammer bitcoincore.org with every CI job?

},
#[command(about = "Return a BOLT12 offer for receiving payments")]
Bolt12Receive {
#[arg(help = "Description to attach along with the offer")]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why was this moved?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Something I noticed making the bolt12 test, we can't create an amountless bolt12 because the description is required but the amount is optional. I'll move to a separate commit to make it cleaner

Comment threade2e-tests/Cargo.toml
edition = "2021"

[dependencies]
corepc-node = { version = "0.10", features = ["download", "29_0"] }

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needs to drop the download feature now.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In CI we have set BITCOIND_SKIP_DOWNLOAD so it'll skip the download but we can keep this so it'll still download locally if you don't have it

https://github.com/rust-bitcoin/corepc/blob/master/node/build.rs#L78

Comment thread.github/workflows/integration-tests-events-rabbitmq.yml
Comment threade2e-tests/src/lib.rs
@benthecarman
benthecarmanforce-pushed the e2e-tests branch 2 times, most recently from ebf74ad to 397c4c5CompareFebruary 20, 2026 18:17
Since the amount was optional and the description was required, we were
unable to create an amountless bolt12 because the description was first
in the positional agruments.
@benthecarman

Copy link
Copy Markdown
CollaboratorAuthor

Got LSPS2 functionality and the forwarded payments tested now too!

tnull
tnull previously approved these changes Feb 23, 2026
@tnull

Copy link
Copy Markdown
Collaborator

Ah, seems CI is unhappy right now.

Introduces an e2e-tests crate that spins up real bitcoind and ldk-server
processes to test the cli -> ldk-server flow. A build.rs automatically compiles
ldk-server (with events-rabbitmq) and ldk-server-cli into a separate
target directory, so tests work without manual pre-building.
Tests cover all cli commands and rabbitmq events.
Claude helped with some of the boilerplate code
@benthecarman

Copy link
Copy Markdown
CollaboratorAuthor

working on more tests for here, but can always do as a follow up if we want to merge now

@tnull
tnull merged commit 57f9170 into lightningdevkit:mainFeb 24, 2026
7 checks passed
rsafier pushed a commit to rsafier/ldk-server that referenced this pull request Apr 20, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

End-to-end testing for ldk-server

3 participants

@benthecarman@ldk-reviews-bot@tnull
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add end-to-end test framework by benthecarman · Pull Request #128 · lightningdevkit/ldk-server · GitHub
Skip to content

Add end-to-end test framework - #128

Merged
tnull merged 3 commits into
lightningdevkit:mainfrom
benthecarman:e2e-tests
Feb 24, 2026
Merged

Add end-to-end test framework#128
tnull merged 3 commits into
lightningdevkit:mainfrom
benthecarman:e2e-tests

Conversation

@benthecarman

Copy link
Copy Markdown
Collaborator

Closes#113

Introduces an e2e-tests crate that spins up real bitcoind and ldk-server processes to test the cli -> ldk-server flow. A build.rs automatically compiles ldk-server (with events-rabbitmq) and ldk-server-cli into a separate target directory, so tests work without manual pre-building.

Tests cover all cli commands and most rabbitmq events.

Claude helped with some of the boilerplate code

Found a small place we can make the bolt12 cli better

@ldk-reviews-bot

ldk-reviews-bot commented Feb 19, 2026

Copy link
Copy Markdown

I've assigned @valentinewallace as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

Comment threade2e-tests/src/lib.rs Outdated

impl TestBitcoind {
pub fn new() -> Self {
let bitcoind = Node::from_downloaded().unwrap();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we enable caching like we do in LDK/LDK Node so we don't needlessly hammer bitcoincore.org with every CI job?

},
#[command(about = "Return a BOLT12 offer for receiving payments")]
Bolt12Receive {
#[arg(help = "Description to attach along with the offer")]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why was this moved?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Something I noticed making the bolt12 test, we can't create an amountless bolt12 because the description is required but the amount is optional. I'll move to a separate commit to make it cleaner

Comment threade2e-tests/Cargo.toml
edition = "2021"

[dependencies]
corepc-node = { version = "0.10", features = ["download", "29_0"] }

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needs to drop the download feature now.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In CI we have set BITCOIND_SKIP_DOWNLOAD so it'll skip the download but we can keep this so it'll still download locally if you don't have it

https://github.com/rust-bitcoin/corepc/blob/master/node/build.rs#L78

Comment thread.github/workflows/integration-tests-events-rabbitmq.yml
Comment threade2e-tests/src/lib.rs
@benthecarman
benthecarmanforce-pushed the e2e-tests branch 2 times, most recently from ebf74ad to 397c4c5CompareFebruary 20, 2026 18:17
Since the amount was optional and the description was required, we were
unable to create an amountless bolt12 because the description was first
in the positional agruments.
@benthecarman

Copy link
Copy Markdown
CollaboratorAuthor

Got LSPS2 functionality and the forwarded payments tested now too!

tnull
tnull previously approved these changes Feb 23, 2026
@tnull

Copy link
Copy Markdown
Collaborator

Ah, seems CI is unhappy right now.

Introduces an e2e-tests crate that spins up real bitcoind and ldk-server
processes to test the cli -> ldk-server flow. A build.rs automatically compiles
ldk-server (with events-rabbitmq) and ldk-server-cli into a separate
target directory, so tests work without manual pre-building.
Tests cover all cli commands and rabbitmq events.
Claude helped with some of the boilerplate code
@benthecarman

Copy link
Copy Markdown
CollaboratorAuthor

working on more tests for here, but can always do as a follow up if we want to merge now

@tnull
tnull merged commit 57f9170 into lightningdevkit:mainFeb 24, 2026
7 checks passed
rsafier pushed a commit to rsafier/ldk-server that referenced this pull request Apr 20, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

End-to-end testing for ldk-server

3 participants

@benthecarman@ldk-reviews-bot@tnull
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add end-to-end test framework by benthecarman · Pull Request #128 · lightningdevkit/ldk-server · GitHub
Skip to content

Add end-to-end test framework - #128

Merged
tnull merged 3 commits into
lightningdevkit:mainfrom
benthecarman:e2e-tests
Feb 24, 2026
Merged

Add end-to-end test framework#128
tnull merged 3 commits into
lightningdevkit:mainfrom
benthecarman:e2e-tests

Conversation

@benthecarman

Copy link
Copy Markdown
Collaborator

Closes#113

Introduces an e2e-tests crate that spins up real bitcoind and ldk-server processes to test the cli -> ldk-server flow. A build.rs automatically compiles ldk-server (with events-rabbitmq) and ldk-server-cli into a separate target directory, so tests work without manual pre-building.

Tests cover all cli commands and most rabbitmq events.

Claude helped with some of the boilerplate code

Found a small place we can make the bolt12 cli better

@ldk-reviews-bot

ldk-reviews-bot commented Feb 19, 2026

Copy link
Copy Markdown

I've assigned @valentinewallace as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

Comment threade2e-tests/src/lib.rs Outdated

impl TestBitcoind {
pub fn new() -> Self {
let bitcoind = Node::from_downloaded().unwrap();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we enable caching like we do in LDK/LDK Node so we don't needlessly hammer bitcoincore.org with every CI job?

},
#[command(about = "Return a BOLT12 offer for receiving payments")]
Bolt12Receive {
#[arg(help = "Description to attach along with the offer")]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why was this moved?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Something I noticed making the bolt12 test, we can't create an amountless bolt12 because the description is required but the amount is optional. I'll move to a separate commit to make it cleaner

Comment threade2e-tests/Cargo.toml
edition = "2021"

[dependencies]
corepc-node = { version = "0.10", features = ["download", "29_0"] }

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needs to drop the download feature now.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In CI we have set BITCOIND_SKIP_DOWNLOAD so it'll skip the download but we can keep this so it'll still download locally if you don't have it

https://github.com/rust-bitcoin/corepc/blob/master/node/build.rs#L78

Comment thread.github/workflows/integration-tests-events-rabbitmq.yml
Comment threade2e-tests/src/lib.rs
@benthecarman
benthecarmanforce-pushed the e2e-tests branch 2 times, most recently from ebf74ad to 397c4c5CompareFebruary 20, 2026 18:17
Since the amount was optional and the description was required, we were
unable to create an amountless bolt12 because the description was first
in the positional agruments.
@benthecarman

Copy link
Copy Markdown
CollaboratorAuthor

Got LSPS2 functionality and the forwarded payments tested now too!

tnull
tnull previously approved these changes Feb 23, 2026
@tnull

Copy link
Copy Markdown
Collaborator

Ah, seems CI is unhappy right now.

Introduces an e2e-tests crate that spins up real bitcoind and ldk-server
processes to test the cli -> ldk-server flow. A build.rs automatically compiles
ldk-server (with events-rabbitmq) and ldk-server-cli into a separate
target directory, so tests work without manual pre-building.
Tests cover all cli commands and rabbitmq events.
Claude helped with some of the boilerplate code
@benthecarman

Copy link
Copy Markdown
CollaboratorAuthor

working on more tests for here, but can always do as a follow up if we want to merge now

@tnull
tnull merged commit 57f9170 into lightningdevkit:mainFeb 24, 2026
7 checks passed
rsafier pushed a commit to rsafier/ldk-server that referenced this pull request Apr 20, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

End-to-end testing for ldk-server

3 participants

@benthecarman@ldk-reviews-bot@tnull
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Add end-to-end test framework by benthecarman · Pull Request #128 · lightningdevkit/ldk-server · GitHub
Skip to content

Add end-to-end test framework - #128

Merged
tnull merged 3 commits into
lightningdevkit:mainfrom
benthecarman:e2e-tests
Feb 24, 2026
Merged

Add end-to-end test framework#128
tnull merged 3 commits into
lightningdevkit:mainfrom
benthecarman:e2e-tests

Conversation

@benthecarman

Copy link
Copy Markdown
Collaborator

Closes#113

Introduces an e2e-tests crate that spins up real bitcoind and ldk-server processes to test the cli -> ldk-server flow. A build.rs automatically compiles ldk-server (with events-rabbitmq) and ldk-server-cli into a separate target directory, so tests work without manual pre-building.

Tests cover all cli commands and most rabbitmq events.

Claude helped with some of the boilerplate code

Found a small place we can make the bolt12 cli better

@ldk-reviews-bot

ldk-reviews-bot commented Feb 19, 2026

Copy link
Copy Markdown

I've assigned @valentinewallace as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

Comment threade2e-tests/src/lib.rs Outdated

impl TestBitcoind {
pub fn new() -> Self {
let bitcoind = Node::from_downloaded().unwrap();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we enable caching like we do in LDK/LDK Node so we don't needlessly hammer bitcoincore.org with every CI job?

},
#[command(about = "Return a BOLT12 offer for receiving payments")]
Bolt12Receive {
#[arg(help = "Description to attach along with the offer")]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why was this moved?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Something I noticed making the bolt12 test, we can't create an amountless bolt12 because the description is required but the amount is optional. I'll move to a separate commit to make it cleaner

Comment threade2e-tests/Cargo.toml
edition = "2021"

[dependencies]
corepc-node = { version = "0.10", features = ["download", "29_0"] }

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needs to drop the download feature now.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In CI we have set BITCOIND_SKIP_DOWNLOAD so it'll skip the download but we can keep this so it'll still download locally if you don't have it

https://github.com/rust-bitcoin/corepc/blob/master/node/build.rs#L78

Comment thread.github/workflows/integration-tests-events-rabbitmq.yml
Comment threade2e-tests/src/lib.rs
@benthecarman
benthecarmanforce-pushed the e2e-tests branch 2 times, most recently from ebf74ad to 397c4c5CompareFebruary 20, 2026 18:17
Since the amount was optional and the description was required, we were
unable to create an amountless bolt12 because the description was first
in the positional agruments.
@benthecarman

Copy link
Copy Markdown
CollaboratorAuthor

Got LSPS2 functionality and the forwarded payments tested now too!

tnull
tnull previously approved these changes Feb 23, 2026
@tnull

Copy link
Copy Markdown
Collaborator

Ah, seems CI is unhappy right now.

Introduces an e2e-tests crate that spins up real bitcoind and ldk-server
processes to test the cli -> ldk-server flow. A build.rs automatically compiles
ldk-server (with events-rabbitmq) and ldk-server-cli into a separate
target directory, so tests work without manual pre-building.
Tests cover all cli commands and rabbitmq events.
Claude helped with some of the boilerplate code
@benthecarman

Copy link
Copy Markdown
CollaboratorAuthor

working on more tests for here, but can always do as a follow up if we want to merge now

@tnull
tnull merged commit 57f9170 into lightningdevkit:mainFeb 24, 2026
7 checks passed
rsafier pushed a commit to rsafier/ldk-server that referenced this pull request Apr 20, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

End-to-end testing for ldk-server

3 participants

@benthecarman@ldk-reviews-bot@tnull
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add end-to-end test framework by benthecarman · Pull Request #128 · lightningdevkit/ldk-server · GitHub
Skip to content

Add end-to-end test framework - #128

Merged
tnull merged 3 commits into
lightningdevkit:mainfrom
benthecarman:e2e-tests
Feb 24, 2026
Merged

Add end-to-end test framework#128
tnull merged 3 commits into
lightningdevkit:mainfrom
benthecarman:e2e-tests

Conversation

@benthecarman

Copy link
Copy Markdown
Collaborator

Closes#113

Introduces an e2e-tests crate that spins up real bitcoind and ldk-server processes to test the cli -> ldk-server flow. A build.rs automatically compiles ldk-server (with events-rabbitmq) and ldk-server-cli into a separate target directory, so tests work without manual pre-building.

Tests cover all cli commands and most rabbitmq events.

Claude helped with some of the boilerplate code

Found a small place we can make the bolt12 cli better

@ldk-reviews-bot

ldk-reviews-bot commented Feb 19, 2026

Copy link
Copy Markdown

I've assigned @valentinewallace as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

Comment threade2e-tests/src/lib.rs Outdated

impl TestBitcoind {
pub fn new() -> Self {
let bitcoind = Node::from_downloaded().unwrap();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we enable caching like we do in LDK/LDK Node so we don't needlessly hammer bitcoincore.org with every CI job?

},
#[command(about = "Return a BOLT12 offer for receiving payments")]
Bolt12Receive {
#[arg(help = "Description to attach along with the offer")]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why was this moved?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Something I noticed making the bolt12 test, we can't create an amountless bolt12 because the description is required but the amount is optional. I'll move to a separate commit to make it cleaner

Comment threade2e-tests/Cargo.toml
edition = "2021"

[dependencies]
corepc-node = { version = "0.10", features = ["download", "29_0"] }

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needs to drop the download feature now.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In CI we have set BITCOIND_SKIP_DOWNLOAD so it'll skip the download but we can keep this so it'll still download locally if you don't have it

https://github.com/rust-bitcoin/corepc/blob/master/node/build.rs#L78

Comment thread.github/workflows/integration-tests-events-rabbitmq.yml
Comment threade2e-tests/src/lib.rs
@benthecarman
benthecarmanforce-pushed the e2e-tests branch 2 times, most recently from ebf74ad to 397c4c5CompareFebruary 20, 2026 18:17
Since the amount was optional and the description was required, we were
unable to create an amountless bolt12 because the description was first
in the positional agruments.
@benthecarman

Copy link
Copy Markdown
CollaboratorAuthor

Got LSPS2 functionality and the forwarded payments tested now too!

tnull
tnull previously approved these changes Feb 23, 2026
@tnull

Copy link
Copy Markdown
Collaborator

Ah, seems CI is unhappy right now.

Introduces an e2e-tests crate that spins up real bitcoind and ldk-server
processes to test the cli -> ldk-server flow. A build.rs automatically compiles
ldk-server (with events-rabbitmq) and ldk-server-cli into a separate
target directory, so tests work without manual pre-building.
Tests cover all cli commands and rabbitmq events.
Claude helped with some of the boilerplate code
@benthecarman

Copy link
Copy Markdown
CollaboratorAuthor

working on more tests for here, but can always do as a follow up if we want to merge now

@tnull
tnull merged commit 57f9170 into lightningdevkit:mainFeb 24, 2026
7 checks passed
rsafier pushed a commit to rsafier/ldk-server that referenced this pull request Apr 20, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

End-to-end testing for ldk-server

3 participants

@benthecarman@ldk-reviews-bot@tnull
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); Add end-to-end test framework by benthecarman · Pull Request #128 · lightningdevkit/ldk-server · GitHub
Skip to content

Add end-to-end test framework - #128

Merged
tnull merged 3 commits into
lightningdevkit:mainfrom
benthecarman:e2e-tests
Feb 24, 2026
Merged

Add end-to-end test framework#128
tnull merged 3 commits into
lightningdevkit:mainfrom
benthecarman:e2e-tests

Conversation

@benthecarman

Copy link
Copy Markdown
Collaborator

Closes#113

Introduces an e2e-tests crate that spins up real bitcoind and ldk-server processes to test the cli -> ldk-server flow. A build.rs automatically compiles ldk-server (with events-rabbitmq) and ldk-server-cli into a separate target directory, so tests work without manual pre-building.

Tests cover all cli commands and most rabbitmq events.

Claude helped with some of the boilerplate code

Found a small place we can make the bolt12 cli better

@ldk-reviews-bot

ldk-reviews-bot commented Feb 19, 2026

Copy link
Copy Markdown

I've assigned @valentinewallace as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

Comment threade2e-tests/src/lib.rs Outdated

impl TestBitcoind {
pub fn new() -> Self {
let bitcoind = Node::from_downloaded().unwrap();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we enable caching like we do in LDK/LDK Node so we don't needlessly hammer bitcoincore.org with every CI job?

},
#[command(about = "Return a BOLT12 offer for receiving payments")]
Bolt12Receive {
#[arg(help = "Description to attach along with the offer")]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why was this moved?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Something I noticed making the bolt12 test, we can't create an amountless bolt12 because the description is required but the amount is optional. I'll move to a separate commit to make it cleaner

Comment threade2e-tests/Cargo.toml
edition = "2021"

[dependencies]
corepc-node = { version = "0.10", features = ["download", "29_0"] }

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needs to drop the download feature now.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In CI we have set BITCOIND_SKIP_DOWNLOAD so it'll skip the download but we can keep this so it'll still download locally if you don't have it

https://github.com/rust-bitcoin/corepc/blob/master/node/build.rs#L78

Comment thread.github/workflows/integration-tests-events-rabbitmq.yml
Comment threade2e-tests/src/lib.rs
@benthecarman
benthecarmanforce-pushed the e2e-tests branch 2 times, most recently from ebf74ad to 397c4c5CompareFebruary 20, 2026 18:17
Since the amount was optional and the description was required, we were
unable to create an amountless bolt12 because the description was first
in the positional agruments.
@benthecarman

Copy link
Copy Markdown
CollaboratorAuthor

Got LSPS2 functionality and the forwarded payments tested now too!

tnull
tnull previously approved these changes Feb 23, 2026
@tnull

Copy link
Copy Markdown
Collaborator

Ah, seems CI is unhappy right now.

Introduces an e2e-tests crate that spins up real bitcoind and ldk-server
processes to test the cli -> ldk-server flow. A build.rs automatically compiles
ldk-server (with events-rabbitmq) and ldk-server-cli into a separate
target directory, so tests work without manual pre-building.
Tests cover all cli commands and rabbitmq events.
Claude helped with some of the boilerplate code
@benthecarman

Copy link
Copy Markdown
CollaboratorAuthor

working on more tests for here, but can always do as a follow up if we want to merge now

@tnull
tnull merged commit 57f9170 into lightningdevkit:mainFeb 24, 2026
7 checks passed
rsafier pushed a commit to rsafier/ldk-server that referenced this pull request Apr 20, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

End-to-end testing for ldk-server

3 participants

@benthecarman@ldk-reviews-bot@tnull