#include <bits/stdc++.h>
#include <fstream>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>


typedef  long long ll;
typedef long double ld;
using namespace std;
using namespace __gnu_pbds;


#define endl "\n"
#define FIO ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>
const int N=5000+5;
int mod=1e9+7;
int n,m;
bool vist[55][50];
bool block(string s[])
{
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<m; j++)
        {
            if(s[i][j]=='B')
            {
                if(i<n-1)
                {
                    if(s[i+1][j]=='G')
                        return 0;
                    if(s[i+1][j]=='.');
                    s[i+1][j]='#';
                }
                if(i>0)
                {
                    if(s[i-1][j]=='G')
                        return 0;
                    if(s[i-1][j]=='.');

                    s[i-1][j]='#';
                }
                if(j<m-1)
                {
                    if(s[i][j+1]=='G')
                        return 0;
                    if(s[i][j+1]=='.');
                    s[i][j+1]='#';
                }
                if(j>0)
                {
                    if(s[i][j-1]=='G')
                        return 0;
                    if(s[i][j-1]=='.');

                    s[i][j-1]='#';
                }

            }
        }

    }

    return 1;
}

void dfs(int i, int j,string s[])
{
    if(s[i][j]=='#'||vist[i][j])
        return ;
    vist[i][j]=1;
    if(i>0)
        dfs(i-1,j,s);
    if(j>0)
        dfs(i,j-1,s);
    if(i<n-1)
        dfs(i+1,j,s);
    if(j<m-1)
        dfs(i,j+1,s);

}
int main()
{
    FIO
    int t;
    cin>>t;
    while(t--)
    {
        string s[55];
        for(int i=0; i<52; i++)
            for(int j=0; j<52; j++)
                vist[i][j]=0;
        cin>>n>>m;
        for(int i=0; i<n; i++)
            cin>>s[i];
        bool good=block(s);
        dfs(n-1,m-1,s);
        for(int i=0; i<n; i++)
            for(int j=0; j<n; j++)
            {
                if(s[i][j]=='G')
                    good&=vist[i][j];

            }

    if(good)
        cout<<"YES\n";
    else
        cout<<"NO\n";

    }

    return 0;
}
