
import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);
        int N=Integer.valueOf(s.nextLine());
        for(int i=0;i<N;i++) System.out.println(help(s));

    }
    public static String help(Scanner s){
        String s1=s.nextLine();
        int p=0;
        for(int i=0;i<s1.length();i++){
            if (s1.charAt(i)==' ')p=i;
        }
        int m=Integer.valueOf(s1.substring(0,p));
        int n=Integer.valueOf(s1.substring(p+1));
        char[][] grid=new char[m][n];
        int[] di=new int[]{-1,+1,0,0};
        int[] dj=new int[]{0,0,-1,+1};
        Set<Integer> goodpersons=new HashSet<>();
        for(int i=0;i<m;i++){
            String si=s.nextLine();
            for(int j=0;j<n;j++){
                switch (si.charAt(j)){
                    case 'G':
                        if(grid[i][j]!='#')grid[i][j]='.';
                        goodpersons.add(i*100+j);
                        break;
                    case 'B':
                        for(int k=0;k<4;k++){
                            int ii=i+di[k],jj=j+dj[k];
                            if(ii>=0&&ii<m&&jj>=0&&jj<n)grid[ii][jj]='#';
                        }
                        break;
                    default:
                        if(grid[i][j]!='#')grid[i][j]=si.charAt(j);
                }
            }
        }
        if(grid[m-1][n-1]=='#')return goodpersons.size()==0? "Yes":"No";
        Queue<int[]> q=new LinkedList<>();
        Set<Integer> set=new HashSet<>();
        q.offer(new int[]{m-1,n-1});
        set.add((m-1)*100+n-1);
        int ans=0;
        while (!q.isEmpty()){
            int[] index=q.poll();
            //System.out.println(Arrays.toString(index));
            for (int i=0;i<4;i++){
                int[] newindex=new int[]{index[0]+di[i],index[1]+dj[i]};
                if(newindex[0]>=0&&newindex[1]>=0&&newindex[0]<m&&newindex[1]<n&&(!set.contains(100*newindex[0]+newindex[1]))&&grid[newindex[0]][newindex[1]]=='.'){
                    q.offer(newindex);
                    set.add(100*newindex[0]+newindex[1]);
                    if(goodpersons.contains(100*newindex[0]+newindex[1]))ans++;
                }
            }
        }
        return ans==goodpersons.size() ? "Yes":"No";
    }
}
