A curated list of beginner-friendly tasks for new contributors. Each issue is self-contained, well-scoped, and designed to help you learn the codebase while making a real contribution.
How to get started: Pick an issue below, comment on it (or create a new GitHub issue referencing the ID), and submit a PR. See CONTRIBUTING.md for setup and PR guidelines.
- Description: The
GetBandwidthPricesendpoint returns historical bandwidth unit prices but has no dedicated test. Write a test that calls the API and verifies the response format. - Labels:
good first issue,test,enhancement - Difficulty: Easy
- Area:
dailybuild/account/-- create a new test class
- Description: Similar to bandwidth prices,
GetEnergyPricesreturns historical energy unit prices. Add a test that validates the response contains comma-separated price entries. - Labels:
good first issue,test,enhancement - Difficulty: Easy
- Area:
dailybuild/account/-- create a new test class
- Description: The
/wallet/getburntrxHTTP endpoint returns the total burned TRX amount but has no HTTP-level test. Add a test in the HTTP test suite. - Labels:
good first issue,test - Difficulty: Easy
- Area:
dailybuild/http/
- Description: Write a test that attempts to freeze 0 TRX and verifies the transaction is rejected. Covers an edge case not currently tested.
- Labels:
good first issue,test - Difficulty: Easy
- Area:
dailybuild/freezeV2/
- Description: The JSON-RPC interface supports
eth_chainIdbut it lacks a dedicated test. Verify it returns the correct chain ID for the test network. - Labels:
good first issue,test - Difficulty: Easy
- Area:
dailybuild/jsonrpc/
- Description: Test what happens when
AccountPermissionUpdateis called with an emptyoperationsbyte string. The system should reject or handle it gracefully. - Labels:
good first issue,test - Difficulty: Medium
- Area:
dailybuild/multisign/
- Description: Test the exact minimum TRX required to create a new account (0.1 TRX / 100,000 sun). Verify that sending less fails and sending exactly the minimum succeeds.
- Labels:
good first issue,test - Difficulty: Easy
- Area:
dailybuild/account/
- Description: Several FreezeV2 tests use
Assert.assertTrue(value == expected)instead ofAssert.assertEquals(actual, expected, "message"). The latter gives better failure messages. - Labels:
good first issue,test,enhancement - Difficulty: Easy
- Files:
dailybuild/freezeV2/FreezeBalanceV2Test001.java,FreezeBalanceV2Test003.java,FreezeBalanceV2Test004.java
- Description: Many
@Testannotations in the transfer package lack adescriptionparameter. Add meaningful descriptions that explain what each test validates. - Labels:
good first issue,test,docs - Difficulty: Easy
- Files:
transfer/WalletTestTransfer001.java,WalletTestTransfer003.java,WalletTestTransfer004.java,WalletTestTransfer007.java
- Description: Tests in
account/WalletTestAccount004.javaandWalletTestAccount005.javause bareAssert.assertTrue(condition)without failure messages. Add descriptive messages to each assertion. - Labels:
good first issue,test,enhancement - Difficulty: Easy
- Files:
account/WalletTestAccount004.java,account/WalletTestAccount005.java
- Description: Tests like
HttpTestBlock001.javacompare against hardcoded numeric values (e.g., block numbers, energy costs) without explaining what they represent. Extract these into named constants or add inline comments. - Labels:
good first issue,test,enhancement - Difficulty: Easy
- Area:
dailybuild/http/
- Description:
HttpTestMarket001.javaandHttpTestMarket002.javauseassertTruefor value comparisons. Refactor toassertEqualswith descriptive messages. - Labels:
good first issue,test,enhancement - Difficulty: Easy
- Files:
dailybuild/http/HttpTestMarket001.java,dailybuild/http/HttpTestMarket002.java
- Description: Several TVM test classes use
System.out.printlnfor debugging output. Replace withlogger.info()(available via@Slf4j) for consistent logging. - Labels:
good first issue,test,enhancement - Difficulty: Easy
- Files:
dailybuild/tvmnewcommand/newGrammar/EnergyAdjustmentTest.java,dailybuild/tvmnewcommand/newGrammar/Opcode.java, and others in thetvmnewcommand/package
- Description: The
JsonRpcBaseutility class provides helper methods for JSON-RPC testing but has minimal documentation. Add Javadoc to public methods explaining parameters, return values, and usage. - Labels:
good first issue,docs - Difficulty: Easy
- File:
common/client/utils/JsonRpcBase.java
- Description:
HttpMethodis the primary HTTP test utility class. Many of its public methods lack Javadoc. Add documentation for at least 10 commonly used methods. - Labels:
good first issue,docs - Difficulty: Medium
- File:
common/client/utils/HttpMethod.java
- Description: Add XML comments to
testng.xmlanddaily-build.xmlexplaining the purpose of each test group, thread count choices, and which tests are serial vs. parallel. - Labels:
good first issue,docs - Difficulty: Easy
- Files:
testcase/src/test/resources/testng.xml,testcase/src/test/resources/daily-build.xml
- Description: The shield (privacy) helper class uses complex cryptographic operations with little explanation. Add inline comments explaining the purpose of key steps.
- Labels:
good first issue,docs - Difficulty: Medium
- File:
common/client/utils/ShieldHelper.java
- Description: Many tests hardcode energy limits like
10000000Lor1000000000L. Add well-named constants (e.g.,DEFAULT_ENERGY_LIMIT,MAX_FEE_LIMIT) to reduce magic numbers across the codebase. - Labels:
good first issue,enhancement,infra - Difficulty: Easy
- File:
common/client/utils/TronConstants.java(or create if needed)
- Description: When
sendcoinfails, the error message does not include the amount or recipient. Enhance the logging to include transaction details for easier debugging. - Labels:
good first issue,enhancement,infra - Difficulty: Easy
- File:
common/client/utils/PublicMethod.java
- Description: Many test classes repeat the same ECKey generation + funding pattern in
@BeforeClass. Create a small utility that generates and funds a test account in one call. - Labels:
good first issue,enhancement,infra - Difficulty: Medium
- Area:
common/client/utils/
- Description:
WalletTestAccount012does not convey what it tests. Read the test methods, determine the feature being tested, and rename to a descriptive class name (e.g.,AccountPermissionUpdateTest). - Labels:
good first issue,enhancement - Difficulty: Easy
- Files:
dailybuild/manual/WalletTestAccount012.java,dailybuild/account/WalletTestAccount012.java
- Description: These numbered block test classes should have descriptive names. Review the test content and rename accordingly (e.g.,
BlockQueryByNumberTest). - Labels:
good first issue,enhancement - Difficulty: Easy
- Files:
dailybuild/transaction/WalletTestBlock004.java,dailybuild/transaction/WalletTestBlock005.java
- Description: Rename these numbered transfer test classes to descriptive names based on their actual test scenarios.
- Labels:
good first issue,enhancement - Difficulty: Easy
- Files:
dailybuild/manual/WalletTestTransfer005.java,dailybuild/manual/WalletTestTransfer006.java
- Description:
ContractScenario004.javausesSystem.out.printlnand a generic name. Rename to describe the contract scenario it tests and fix the logging. - Labels:
good first issue,enhancement - Difficulty: Easy
- File:
contract/scenario/ContractScenario004.java
- Check GitHub Issues to see if someone is already working on it.
- Open a new issue (or comment on an existing one) saying you want to work on it.
- Fork the repo, create a branch (
feature/issue-titleorfix/issue-title), and submit a PR. - Reference this document and the issue number in your PR description.
All file paths above are relative to testcase/src/test/java/stest/tron/wallet/.